Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc |
|
#
bff82488 |
| 20-Mar-2018 |
Aaron LI <aly@aaronly.me> |
<net/if.h>: Do not include <net/if_var.h> for _KERNEL
* Clean up an ancient leftover: do not include <net/if_var.h> from <net/if.h> for kernel stuffs.
* Adjust various files to include the necess
<net/if.h>: Do not include <net/if_var.h> for _KERNEL
* Clean up an ancient leftover: do not include <net/if_var.h> from <net/if.h> for kernel stuffs.
* Adjust various files to include the necessary <net/if_var.h> header.
NOTE: I have also tested removing the inclusion of <net/if.h> from <net/if_var.h>, therefore add <net/if.h> inclusion for those files that need it but only included <net/if_var.h>. For some files, the header inclusion orderings are also adjusted.
show more ...
|
Revision tags: v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1 |
|
#
32f8b1ac |
| 25-Sep-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Utilize netisr_domsg_global
|
#
83d8ec1e |
| 25-Sep-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: No need to explicitly align io context and systimer context
|
#
85b010b0 |
| 25-Sep-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Adjust comment
|
#
0178c976 |
| 25-Sep-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Don't do direct input in critical section.
|
#
8d0afa86 |
| 23-Sep-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Implement direct input support.
When "direct input" is enabled by driver, driver's RX polling handler will run ethernet/ip/tcp processing directly, which avoids cache-miss on mbufs themselv
polling: Implement direct input support.
When "direct input" is enabled by driver, driver's RX polling handler will run ethernet/ip/tcp processing directly, which avoids cache-miss on mbufs themselves. Currently it is enabled on ix(4) by default.
The normal IP forwarding performance is improved by %12, while the fast IP forwarding performance is improved by 10%. 13.2Mpps is achieved for dual side IP forwarding!
1 request/connection HTTP/1.1 performance and avg-latency stay same, but the latency is further stablized: 1K 5.20ms -> 4.60ms 8K 6.43ms -> 5.76ms 16K 16.30ms -> 14.90ms
show more ...
|
#
5204e13c |
| 07-Aug-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
netisr: Simplify assertion related bits
|
Revision tags: v4.8.1 |
|
#
e3bcf7f5 |
| 27-Jul-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Simplify the code by using netsr_*msg functions.
|
#
d1958e12 |
| 09-Apr-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
ifpoll: Use netisr_ncpus.
|
#
49f7483b |
| 09-Apr-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
ifpoll: Use SYSINIT to initialize per-cpu ifpoll context.
|
Revision tags: v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4 |
|
#
471bee20 |
| 31-Jul-2015 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
net: Factor out ASSERT_IN_NETISR and ASSERT_IS_NETISR
|
Revision tags: v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4, v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1 |
|
#
84a3d873 |
| 25-Jan-2014 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Utilize microtime_pcpu
|
Revision tags: v3.6.0, v3.7.1, v3.6.0rc, v3.7.0 |
|
#
c068fb59 |
| 30-Oct-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
msgport: Add putport_oncpu; helps scheduling netisr locally for spin port
Background: High rate (actually same rate as polling(4)) IPIs on random CPUs are observed when polling(4) is enabled and the
msgport: Add putport_oncpu; helps scheduling netisr locally for spin port
Background: High rate (actually same rate as polling(4)) IPIs on random CPUs are observed when polling(4) is enabled and there is virtually no network activity.
After polling(4) activities are traced using ktr(9), it turns out that the high rate IPIs are actually from the wakeup() on netisr's msgport. Since the sleep queue cpumask is indexed by the hash of ident, there are chances that the netisr's msgport ident has the same hash value as other idents that certain threads on other CPUs are waiting on. If this ever happens (well, it does happen), the netisr's msgport wakeup will trigger "wakeup" IPIs to other CPUs. However, these "wakeup" IPIs are actually useless, since only netisr will wait on its msgport.
putport_oncpu() msgport method is added to call wakeup_mycpu() for spin msgport, if we know that this port is only accessed by one thread on the current CPU, e.g. polling(4). This is also the case for other network code, e.g. syncache timeout, TCP timeout, fastforward flow cache timeout etc. However, these network code's running rate is too low to unveil the extra "wakeup" IPIs problem. lwkt_sendmsg_oncpu() is added as wrapper to putport_oncpu() msgport method.
Currently, only polling(4) is using lwkt_sendmsg_oncpu(). Others will be converted soon.
show more ...
|
#
95ff9ed0 |
| 29-Oct-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Add preliminary KTR support
|
#
f1e0231c |
| 17-Sep-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
ifpoll: Use tsc_invariant consistently
|
Revision tags: v3.4.3 |
|
#
c415c77e |
| 19-Jun-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
net: Use tsc_invariant when it is necessary; mainly in time measure
|
#
f793baa1 |
| 18-Jun-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Fix comment
|
Revision tags: v3.4.2 |
|
#
5337421c |
| 02-May-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
netisr: Inline netisr_cpuport() and netisr_curport()
These two functions do nothing more than just return pointer to the element in the array.
Per our header file naming convention, put these two f
netisr: Inline netisr_cpuport() and netisr_curport()
These two functions do nothing more than just return pointer to the element in the array.
Per our header file naming convention, put these two functions in net/netisr2.h
show more ...
|
#
ec7f7fc8 |
| 28-Apr-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
netisr: Function renaming; no functional changes
This cleans up code for keeping input packets' hash instead of masking the hash with ncpus2_mask. netisr_hashport(), which maps packet hash to netis
netisr: Function renaming; no functional changes
This cleans up code for keeping input packets' hash instead of masking the hash with ncpus2_mask. netisr_hashport(), which maps packet hash to netisr port, will be added soon.
show more ...
|
Revision tags: v3.4.0, v3.4.1, v3.4.0rc, v3.5.0 |
|
#
dfd3b18b |
| 05-Jan-2013 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
if: Move if_cpuid into ifaltq; prepare multiple TX queues support
if_cpuid and if_npoll_cpuid are merged and moved into ifaltq as altq_cpuid, which indicates the owner CPU of the tx queue. Since we
if: Move if_cpuid into ifaltq; prepare multiple TX queues support
if_cpuid and if_npoll_cpuid are merged and moved into ifaltq as altq_cpuid, which indicates the owner CPU of the tx queue. Since we already have code in if_start_dispatch() to catching tx queue owner CPU changes, this merging is quite safe.
show more ...
|
#
5f497de9 |
| 24-Dec-2012 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Perform RX polling before TX polling
|
#
fa7903f3 |
| 18-Dec-2012 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Increase default polling rate to 6000Hz
This increases the bidirational normal IP forwarding rate by 30~40Kpps
|
Revision tags: v3.2.2 |
|
#
107282b9 |
| 14-Dec-2012 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Increase default rx.each_burst to 50
With this default the CPU usage still could be throttled to the desired value (rx.user_frac), it gives reasonable burst for modern systems and number of
polling: Increase default rx.each_burst to 50
With this default the CPU usage still could be throttled to the desired value (rx.user_frac), it gives reasonable burst for modern systems and number of empty RX polling is reduced.
show more ...
|
#
d61a4c96 |
| 14-Dec-2012 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Diverge each CPU's polling frequency a little bit (within 50Hz)
This avoids possible thunder hurd effect on ifnet.if_snd's serializer.
|
#
ac65d38f |
| 10-Dec-2012 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
polling: Add tunable for net.ifpoll.X.rx.user_frac
|