Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Oct 2013 08:20:02 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Venkata Duvvuru <VenkatKumar.Duvvuru@emulex.com>
Cc:        "freebsd-current@freebsd.org" <freebsd-current@freebsd.org>
Subject:   Re: Freebsd-10.0-CURRENT problem in the bottom half
Message-ID:  <CAJ-Vmom0vbqcK5AOUXqiTxED13k-xaHC9tw2fWe=Ry0XRXqicg@mail.gmail.com>
In-Reply-To: <BF3270C86E8B1349A26C34E4EC1C44CB2C72A773@CMEXMB1.ad.emulex.com>
References:  <BF3270C86E8B1349A26C34E4EC1C44CB2C72A773@CMEXMB1.ad.emulex.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

Can you please try 10-STABLE or 11-CURRENT? 10-CURRENT indicates that
you're a little behind in the source tree(s).

There's been a bit of work recently that may improve things in general for =
you.

Thanks!


-a


On 31 October 2013 07:00, Venkata Duvvuru
<VenkatKumar.Duvvuru@emulex.com> wrote:
> Hi,
> In Freebsd 10.0-current with Emulex's OCE driver, I observe that the bott=
om half is hogging all the CPU which is leading to system sluggishness. I u=
sed the same hardware to check the behavior on 9.1-RELEASE, everything is f=
ine, bottom half is not taking more than 10% of the CPU even at the line ra=
te speed. But with half the throughput of line rate in Freebsd-10.0-current=
 all the CPUs peak and "top -aSCHIP" shows that it's all bottom half who is=
 eating the CPU. I also tried with Intel's 10g NIC to see if it has got the=
 same problem and interestingly it is also having the same problem, where b=
ottom half is hogging all the CPU.
>
> We did some profiling to check where the problem is. I'm pasting the prof=
iling results for reference here. Observation from the results is that  uma=
_zalloc_arg=3D=3D> __mtx_lock_sleep is taking quite a bit of the CPU. We sl=
eep at a few places in the bottom half and I think the bottom half scheduli=
ng is what is causing the problem. Please let me know if you see something =
very obvious from the profiling data.
>
> I'm seeing similar problem with ixgbe driver as well uma_zalloc_arg=3D=3D=
> __mtx_lock_sleep is taking quite a bit of the CPU.
>
> Top command results are also pasted below for both 10.0-current (where th=
e problem is seen) and 9.1-RELEASE (where the problem is not seen).
>
> 42.99%  [372357]   __mtx_lock_sleep @ /boot/kernel/kernel
> 100.0%  [372357]    __mtx_lock_flags
>   80.37%  [299245]     sosend_generic
>    100.0%  [299245]      soo_write
>   17.27%  [64322]      uma_zalloc_arg
>    50.43%  [32438]       m_copym
>    45.85%  [29490]       m_getm2
>    03.72%  [2393]        tcp_output
>    00.00%  [1]           oce_alloc_rx_bufs @ /boot/kernel/oce.ko
>   02.35%  [8762]       _sleep @ /boot/kernel/kernel
>    100.0%  [8762]        sbwait
>   00.00%  [11]         in_matroute
>    100.0%  [11]          rtalloc1_fib
>   00.00%  [10]         uma_zfree_arg
>    60.00%  [6]           m_freem
>    40.00%  [4]           sbdrop_internal
>   00.00%  [3]          rtalloc1_fib
>    100.0%  [3]           rtalloc_ign_fib
>   00.00%  [3]          tcp_output
>    100.0%  [3]           tcp_usr_send
>   00.00%  [1]          _cv_wait
>    100.0%  [1]           usb_process
>
> 34.98%  [303027]   trash_ctor @ /boot/kernel/kernel
> 87.44%  [264956]    mb_ctor_clust
>   100.0%  [264956]     uma_zalloc_arg
>    100.0%  [264956]      m_getm2
> 12.51%  [37921]     mb_ctor_mbuf
>   100.0%  [37921]      uma_zalloc_arg
>    48.28%  [18308]       m_getm2
>    48.18%  [18272]       m_copym
>    03.54%  [1341]        tcp_output
> 00.05%  [150]       mb_ctor_pack
>   100.0%  [150]        uma_zalloc_arg
>    96.67%  [145]         m_getm2
>    03.33%  [5]           oce_alloc_rx_bufs @ /boot/kernel/oce.ko
>
> 04.36%  [37786]    __rw_wlock_hard @ /boot/kernel/kernel
> 100.0%  [37786]     _rw_wlock_cookie
>   99.88%  [37741]      tcp_usr_send
>    100.0%  [37741]       sosend_generic
>   00.11%  [43]         in_pcblookup_hash
>    100.0%  [43]          tcp_input
>
>
> Top -aSCHIP with Freebsd-10.0-CURRENT (throughput 4.5 Gbps)
>   PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
>     0 root       -92    0     0K   960K -      11   4:20 100.00% [kernel{=
oce1 taskq}]
> 2325 root       103    0 70524K  6240K CPU5    5   0:39 100.00% iperf -c =
12.0.238.24 -t 180 -i 3 -P 10{iperf}
>     0 root       -92    0     0K   960K CPU8    8   5:17 99.37% [kernel{o=
ce1 taskq}]
>     0 root       -92    0     0K   960K CPU10  10   4:27 99.37% [kernel{o=
ce1 taskq}]
>     0 root       -92    0     0K   960K CPU9    9   3:35 98.88% [kernel{o=
ce1 taskq}]
>     0 root       -92    0     0K   960K CPU7    7   7:25 98.29% [kernel{o=
ce1 taskq}]
>    11 root       155 ki31     0K   256K RUN    12  14:55 93.90% [idle{idl=
e: cpu12}]
>    11 root       155 ki31     0K   256K CPU13  13  14:48 91.70% [idle{idl=
e: cpu13}]
>    11 root       155 ki31     0K   256K CPU14  14  18:35 89.79% [idle{idl=
e: cpu14}]
>    11 root       155 ki31     0K   256K RUN    15  20:55 87.99% [idle{idl=
e: cpu15}]
>    11 root       155 ki31     0K   256K RUN     4  19:35 73.68% [idle{idl=
e: cpu4}]
>    11 root       155 ki31     0K   256K RUN     0  19:47 66.89% [idle{idl=
e: cpu0}]
>    11 root       155 ki31     0K   256K CPU2    2  18:53 64.89% [idle{idl=
e: cpu2}]
>    11 root       155 ki31     0K   256K CPU6    6  19:55 61.18% [idle{idl=
e: cpu6}]
>    11 root       155 ki31     0K   256K CPU1    1  18:46 55.66% [idle{idl=
e: cpu1}]
>    11 root       155 ki31     0K   256K RUN     5  19:41 42.48% [idle{idl=
e: cpu5}]
> 2325 root        52    0 70524K  6240K sbwait  6   0:15 38.77% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
>    11 root       155 ki31     0K   256K CPU3    3  19:06 36.38% [idle{idl=
e: cpu3}]
> 2325 root        49    0 70524K  6240K CPU1    1   0:14 35.06% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
> 2325 root        44    0 70524K  6240K sbwait  0   0:13 33.59% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
> 2325 root        42    0 70524K  6240K sbwait  2   0:13 33.15% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
> 2325 root        41    0 70524K  6240K sbwait  6   0:12 29.98% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
> 2325 root        36    0 70524K  6240K sbwait 15   0:09 25.10% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
> 2325 root        34    0 70524K  6240K CPU13  13   0:09 24.46% iperf -c 1=
2.0.238.24 -t 180 -i 3 -P 10{iperf}
>
> Top -aSCHIP with Freebsd-9.1-RELEASE (throughput 9.6 Gbps)
> last pid: 16802;  load averages:  0.68,  0.15,  0.05                     =
                                                                           =
 up 3+06:17:33  07:35:29
> 187 processes: 15 running, 128 sleeping, 44 waiting
> CPU 0:   0.0% user,  0.0% nice, 13.8% system,  0.4% interrupt, 85.8% idle
> CPU 1:   0.0% user,  0.0% nice,  9.4% system,  0.8% interrupt, 89.8% idle
> CPU 2:   0.0% user,  0.0% nice, 10.2% system,  0.0% interrupt, 89.8% idle
> CPU 3:   0.0% user,  0.0% nice, 12.6% system,  0.0% interrupt, 87.4% idle
> CPU 4:   0.0% user,  0.0% nice, 13.4% system,  0.0% interrupt, 86.6% idle
> CPU 5:   0.4% user,  0.0% nice, 11.0% system,  0.0% interrupt, 88.6% idle
> CPU 6:   0.0% user,  0.0% nice, 16.9% system,  0.0% interrupt, 83.1% idle
> CPU 7:   0.0% user,  0.0% nice, 32.3% system,  0.0% interrupt, 67.7% idle
> CPU 8:   0.0% user,  0.0% nice, 21.7% system,  0.0% interrupt, 78.3% idle
> CPU 9:   0.0% user,  0.0% nice, 24.4% system,  0.0% interrupt, 75.6% idle
> CPU 10:  0.4% user,  0.0% nice,  6.3% system,  0.0% interrupt, 93.3% idle
> CPU 11:  0.0% user,  0.0% nice, 16.1% system,  0.0% interrupt, 83.9% idle
> Mem: 21M Active, 2201M Inact, 1094M Wired, 1236M Buf, 8552M Free
> Swap: 15G Total, 15G Free
>
>   PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
>    11 root     155 ki31     0K   192K CPU1    1  78.1H 95.75% [idle{idle:=
 cpu1}]
>    11 root     155 ki31     0K   192K RUN    10  78.1H 95.07% [idle{idle:=
 cpu10}]
>    11 root     155 ki31     0K   192K CPU4    4  78.2H 94.29% [idle{idle:=
 cpu4}]
>    11 root     155 ki31     0K   192K CPU2    2  78.2H 94.19% [idle{idle:=
 cpu2}]
>    11 root     155 ki31     0K   192K CPU5    5  78.2H 94.09% [idle{idle:=
 cpu5}]
>    11 root     155 ki31     0K   192K CPU3    3  78.2H 94.09% [idle{idle:=
 cpu3}]
>    11 root     155 ki31     0K   192K CPU6    6  78.1H 86.77% [idle{idle:=
 cpu6}]
>    11 root     155 ki31     0K   192K CPU11  11  78.1H 86.57% [idle{idle:=
 cpu11}]
>    11 root     155 ki31     0K   192K CPU0    0  77.5H 86.28% [idle{idle:=
 cpu0}]
>    11 root     155 ki31     0K   192K RUN     8  78.1H 81.79% [idle{idle:=
 cpu8}]
>    11 root     155 ki31     0K   192K CPU9    9  78.1H 78.47% [idle{idle:=
 cpu9}]
>    11 root     155 ki31     0K   192K RUN     7  78.1H 76.86% [idle{idle:=
 cpu7}]
>     0 root     -92    0     0K   784K -       7   0:08 26.37% [kernel{oce=
2 taskq}]
>     0 root     -92    0     0K   784K CPU4    9   0:06 22.36% [kernel{oce=
2 taskq}]
>     0 root     -92    0     0K   784K -       8   0:07 20.65% [kernel{oce=
2 taskq}]
>     0 root     -92    0     0K   784K CPU3    6   0:06 15.48% [kernel{oce=
2 taskq}]
>     0 root     -92    0     0K   784K -       0   0:04 10.99% [kernel{oce=
2 taskq}]
>     0 root     -92    0     0K   784K -      11   0:04 10.89% [kernel{oce=
2 taskq}]
> 16801 root      26    0 65196K  5292K sbwait  4   0:03 10.50% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      23    0 65196K  5292K sbwait  0   0:02  6.79% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      23    0 65196K  5292K sbwait 10   0:01  6.05% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      24    0 65196K  5292K sbwait  5   0:02  5.96% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      24    0 65196K  5292K sbwait  2   0:01  5.66% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      22    0 65196K  5292K sbwait 10   0:01  4.79% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      23    0 65196K  5292K sbwait 11   0:01  4.59% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      23    0 65196K  5292K sbwait 10   0:01  3.96% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      22    0 65196K  5292K sbwait 10   0:01  3.96% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> 16801 root      21    0 65196K  5292K sbwait  3   0:01  3.27% iperf -c 12=
.0.238.24 -t 180 -i 3 -P 10{iperf}
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org=
"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmom0vbqcK5AOUXqiTxED13k-xaHC9tw2fWe=Ry0XRXqicg>