svn commit: r285051 - head/sys/netinet

Olivier Cochard-Labbé olivier at cochard.me
Mon Aug 3 13:06:22 UTC 2015


On Tue, Jul 28, 2015 at 2:42 PM, Gleb Smirnoff <glebius at freebsd.org> wrote:

>
> Here is suggested patch. Ermal and Oliver, can you please test/benchmark
> it?
>

​Hi,

this patch reduce performanece :-(

Here are the results regarding forwarding:

x r285046.pps.forwarding (IPSEC compiled but not used)
+ r285051.pps.forwarding (IPSEC compiled but not used)
* r285051-glebius-patched.pps.forwarding (IPSEC compiled but not used)
+--------------------------------------------------------------------------------+
|xxx     xx                **** *
+ +++|
||_M_A___|
|_A_|                                             |AM||
+--------------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x   5        397733        406951        399300      401613.8     4324.9755
+   5        478095        482079        480869      480543.6     1666.0282
Difference at 95.0% confidence
        78929.8 +/- 4779.72
        19.6532% +/- 1.19013%
        (Student's t, pooled s = 3277.27)
*   5        424720        430745        427014      427378.4     2351.7439
Difference at 95.0% confidence
        25764.6 +/- 5076.98
        6.41527% +/- 1.26415%
        (Student's t, pooled s = 3481.1)
​


PMC stats during forwarding bench:
[root at netgate]/data# pmcannotate pmc.forwarding.out
/data/debug/boot/kernel/kernel.symbols
CONVERSION STATISTICS:
 #samples/total                           33880
Profile trace for function: __rw_rlock() [6.29%]
Profile trace for function: ip_forward() [4.68%]
Profile trace for function: ip_output() [4.64%]
Profile trace for function: binuptime() [4.05%]
Profile trace for function: igb_mq_start_locked() [3.79%]
Profile trace for function: igb_rxeof() [3.46%]
Profile trace for function: tsc_get_timecount_low_lfence() [3.25%]
Profile trace for function: ether_output() [3.03%]
Profile trace for function: rtalloc1_fib() [2.77%]
Profile trace for function: random_ivy_read() [2.64%]
Profile trace for function: _rw_runlock_cookie() [2.64%]
Profile trace for function: ether_nh_input() [2.63%]
Profile trace for function: ip_input() [2.55%]
Profile trace for function: key_allocsp_default() [2.39%]
Profile trace for function: igb_mq_start() [2.39%]
Profile trace for function: bzero() [2.08%]
Profile trace for function: uma_zalloc_arg() [1.95%]
Profile trace for function: memcpy() [1.84%]
Profile trace for function: _mtx_lock_spin_cookie() [1.83%]
Profile trace for function: bcopy() [1.76%]
Profile trace for function: random_harvest_queue() [1.63%]
Profile trace for function: __mtx_lock_sleep() [1.56%]
Profile trace for function: uma_zfree_arg() [1.47%]
Profile trace for function: arpresolve() [1.39%]
Profile trace for function: in_cksumdata() [1.25%]
Profile trace for function: bounce_bus_dmamap_load_buffer() [1.22%]
Profile trace for function: bcmp() [1.13%]
Profile trace for function: rtalloc_ign_fib() [1.11%]
Profile trace for function: rn_match() [1.03%]
Profile trace for function: netisr_dispatch_src() [1.03%]
Profile trace for function: critical_exit() [1.02%]
Profile trace for function: bus_dmamap_load_mbuf_sg() [0.87%]
Profile trace for function: spinlock_exit() [0.79%]
Profile trace for function: in_cksum_skip() [0.75%]
Profile trace for function: ip_ipsec_output() [0.75%]
Profile trace for function: acpi_cpu_c1() [0.74%]
Profile trace for function: in_broadcast() [0.74%]
Profile trace for function: spinlock_enter() [0.74%]
Profile trace for function: igb_refresh_mbufs() [0.71%]
Profile trace for function: in_lltable_lookup() [0.71%]
Profile trace for function: ip_fastforward() [0.68%]
Profile trace for function: m_adj() [0.65%]
Profile trace for function: ether_demux() [0.65%]
Profile trace for function: _key_freesp() [0.61%]
Profile trace for function: lockstat_nsecs() [0.60%]
Profile trace for function: m_freem() [0.58%]
Profile trace for function: critical_enter() [0.56%]
Profile trace for function: m_copydata() [0.55%]
Profile trace for function: mb_free_ext() [0.54%]
Profile trace for function: pmap_kextract() [0.50%]

​

​And about fastforwarding:
​
x 285046.pps.fastforwarding (IPSEC compiled but not used)
+ 285051.pps.fastforwarding (IPSEC compiled but not used)
* r285051-glebius-patched.pps.fastforwarding (IPSEC compiled but not used)
+--------------------------------------------------------------------------------+
|*
+            |
|*     * * *                                                        ++ +x
x+ xx x|
||____AM__|
|_MA__|__AM_| |
+--------------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x   5        742683        754709        750940      749015.6     4944.9059
+   5        736459        747593        738197      740112.4     4511.1611
Difference at 95.0% confidence
        -8903.2 +/- 6902.82
        -1.18865% +/- 0.921585%
        (Student's t, pooled s = 4733)
*   5        638356        652855        646668        645263     6599.8604
Difference at 95.0% confidence
        -103753 +/- 8504.75
        -13.8519% +/- 1.13546%
        (Student's t, pooled s = 5831.39)

And pmcstat during fastforwarding:

[root at netgate]/data# pmcannotate pmc.fastforwading.out
/data/debug/boot/kernel/kernel.symbols
CONVERSION STATISTICS:
 #samples/total                           37656
Profile trace for function: __rw_rlock() [9.12%]
Profile trace for function: ip_fastforward() [5.80%]
Profile trace for function: binuptime() [5.73%]
Profile trace for function: rtalloc1_fib() [4.92%]
Profile trace for function: tsc_get_timecount_low_lfence() [4.71%]
Profile trace for function: igb_rxeof() [4.51%]
Profile trace for function: _rw_runlock_cookie() [4.14%]
Profile trace for function: igb_mq_start_locked() [4.12%]
Profile trace for function: ether_output() [3.36%]
Profile trace for function: ether_nh_input() [3.11%]
Profile trace for function: igb_mq_start() [3.02%]
Profile trace for function: random_ivy_read() [2.88%]
Profile trace for function: bzero() [2.70%]
Profile trace for function: memcpy() [2.54%]
Profile trace for function: random_harvest_queue() [2.32%]
Profile trace for function: __mtx_lock_sleep() [1.91%]
Profile trace for function: bcmp() [1.78%]
Profile trace for function: _mtx_lock_spin_cookie() [1.73%]
Profile trace for function: igb_txeof() [1.70%]
Profile trace for function: rn_match() [1.69%]
Profile trace for function: bounce_bus_dmamap_load_buffer() [1.52%]
Profile trace for function: rtalloc_ign_fib() [1.30%]
Profile trace for function: mb_free_ext() [1.29%]
Profile trace for function: arpresolve() [1.28%]
Profile trace for function: bcopy() [1.22%]
Profile trace for function: spinlock_exit() [1.06%]
Profile trace for function: mb_ctor_pack() [1.04%]
Profile trace for function: uma_zalloc_arg() [1.02%]
Profile trace for function: spinlock_enter() [1.00%]
Profile trace for function: bus_dmamap_load_mbuf_sg() [0.93%]
Profile trace for function: critical_exit() [0.90%]
Profile trace for function: igb_refresh_mbufs() [0.89%]
Profile trace for function: acpi_cpu_c1() [0.89%]
Profile trace for function: netisr_dispatch_src() [0.81%]
Profile trace for function: uma_zfree_arg() [0.80%]
Profile trace for function: lockstat_nsecs() [0.79%]
Profile trace for function: ether_demux() [0.76%]
Profile trace for function: in_lltable_lookup() [0.75%]
Profile trace for function: ip_findroute() [0.66%]
Profile trace for function: in_localip() [0.65%]
Profile trace for function: _mtx_trylock_flags_() [0.57%]
Profile trace for function: _bus_dmamap_load_buffer() [0.54%]

​Regards,

Olivier​


More information about the svn-src-all mailing list