public inbox for newlib-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] iflib: Improve mapping of TX/RX queues to CPUs
@ 2022-06-24  5:42 Sebastian Huber
  0 siblings, 0 replies; only message in thread
From: Sebastian Huber @ 2022-06-24  5:42 UTC (permalink / raw)
  To: newlib-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=7c03cdf47e2a664a193a0c97269a353232d3fd8f

commit 7c03cdf47e2a664a193a0c97269a353232d3fd8f
Author: Patrick Kelsey <pkelsey@FreeBSD.org>
Date:   Mon Apr 26 00:25:59 2021 -0400

    iflib: Improve mapping of TX/RX queues to CPUs
    
    iflib now supports mapping each (TX,RX) queue pair to the same CPU
    (default), to separate CPUs, or to a pair of physical and logical CPUs
    that share the same L2 cache.  The mapping mechanism supports unequal
    numbers of TX and RX queues, with the excess queues always being
    mapped to consecutive physical CPUs.  When the platform cannot
    distinguish between physical and logical CPUs, all are treated as
    physical CPUs.  See the comment on get_cpuid_for_queue() for the
    entire matrix.
    
    The following device-specific tunables influence the mapping process:
    dev.<device>.<unit>.iflib.core_offset       (existing)
    dev.<device>.<unit>.iflib.separate_txrx     (existing)
    dev.<device>.<unit>.iflib.use_logical_cores (new)
    
    The following new, read-only sysctls provide visibility of the mapping
    results:
    dev.<device>.<unit>.iflib.{t,r}xq<n>.cpu
    
    When an iflib driver allocates TX softirqs without providing reference
    RX IRQs, iflib now binds those TX softirqs to CPUs using the above
    mapping mechanism (that is, treats them as if they were TX IRQs).
    Previously, such bindings were left up to the grouptaskqueue code and
    thus fell outside of the iflib CPU mapping strategy.
    
    Reviewed by:    kbowling
    Tested by:      olivier, pkelsey
    MFC after:      3 weeks
    Differential Revision:  https://reviews.freebsd.org/D24094

Diff:
---
 newlib/libc/sys/rtems/include/sys/cpuset.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/newlib/libc/sys/rtems/include/sys/cpuset.h b/newlib/libc/sys/rtems/include/sys/cpuset.h
index 7958e3b1a..a321bddc2 100644
--- a/newlib/libc/sys/rtems/include/sys/cpuset.h
+++ b/newlib/libc/sys/rtems/include/sys/cpuset.h
@@ -61,6 +61,7 @@
 #define	CPU_OR_ATOMIC(d, s)		BIT_OR_ATOMIC(CPU_SETSIZE, d, s)
 #define	CPU_COPY_STORE_REL(f, t)	BIT_COPY_STORE_REL(CPU_SETSIZE, f, t)
 #define	CPU_FFS(p)			BIT_FFS(CPU_SETSIZE, p)
+#define	CPU_FLS(p)			BIT_FLS(CPU_SETSIZE, p)
 #define	CPUSET_FSET			BITSET_FSET(_NCPUWORDS)
 #define	CPUSET_T_INITIALIZER		BITSET_T_INITIALIZER


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-06-24  5:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-24  5:42 [newlib-cygwin] iflib: Improve mapping of TX/RX queues to CPUs Sebastian Huber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).