Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Jun 2018 22:08:24 +0530
From:      Steevan Rodrigues <steevanxperia@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: high CPU usage in FreeBSD for a PCIe card driver
Message-ID:  <CAKsGTHT-KnKHGDCOaECq_B6_5=RWdHeqfoP1fmLU5k1dOGKRvg@mail.gmail.com>
In-Reply-To: <CANCZdfoO6HsxiCt_SC8n1Jb3GhmbMewAQ2F4Y5OvfWymjcwDLw@mail.gmail.com>
References:  <CAKsGTHR9AzX2v%2B%2BDbNCdt7RwxEfw8jKwndXzH9oxQEHvPszo%2Bw@mail.gmail.com> <CANCZdfoO6HsxiCt_SC8n1Jb3GhmbMewAQ2F4Y5OvfWymjcwDLw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Thank you for the quickly reply.     The same driver gives pretty good
performance with low CPU usage in kernel mode.
I see high CPU usage only for user mode application.

Here is the Dtrace hotkernel output details provided in the earlier
attachment.

CPU usage details on a  12 core 24 thread server PC.

part of the perl hotkernel  output

kernel`free                                              1314   0.2%
kernel`_sx_slock                                         1415   0.3%
kernel`dev_relthread                                     1435   0.3%
kernel`devvn_refthread                                   1842   0.3%
kernel`_mtx_lock_spin_cookie                             2059   0.4%
kernel`copyin                                            2164   0.4%
kernel`amd64_syscall                                     2235   0.4%
kernel`__mtx_lock_spin_flags                             3566   0.6%
kernel`bzero                                             4889   0.9%
kernel`__mtx_lock_sleep                                  9323   1.7%
kernel`acpi_cpu_idle                                    11166   2.0%
kernel`pmap_extract                                     17491   3.1%
kernel`spinlock_exit                                    64850  11.5%
kernel`cpu_idle                                        134617  23.9%
kernel`lock_delay                                      263330  46.8%

-------------------------------------------------

CPU usage details on a  2 core 4 thread Intel i3 based Desktop PC.

part of the perl hotkernel  output


kernel`0xffffffff80                                       558   0.6%
kernel`copyout                                            592   0.6%
0xffffffff822368a3                                        639   0.7%
kernel`amd64_syscall                                      683   0.7%
kernel`__mtx_unlock_flags                                 728   0.8%
kernel`copyin                                            1311   1.4%
kernel`bzero                                             1434   1.5%
kernel`pmap_extract                                      1615   1.7%
kernel`lock_delay                                        2329   2.4%
0xffffffff822b0b5e                                       2528   2.6%
kernel`spinlock_exit                                    20950  21.8%
kernel`cpu_idle                                         48124  50.2%

------------------------------------------------------

Thanks
Steevan

On Wed, Jun 27, 2018 at 7:41 PM, Warner Losh <imp@bsdimp.com> wrote:

> No. It's not from mtx_lock. It's likely from lock contention. Since the
> list ate the attachment, I can't check for sure, but high CPU usage in
> locking primitives is a classic sign of poor lock design leading to
> contention.
>
> Warner
>
> On Wed, Jun 27, 2018 at 6:28 AM, Steevan Rodrigues <
> steevanxperia@gmail.com> wrote:
>
>> Hi
>>
>> I  come from Linux background and new to FreeBSD.
>>
>> I am investigating a high CPU usage issue on FreeBSD for PCIe driver of a
>> card . The card can process data at a rate of 30 to 50 Gbps . However, I
>> see very high CPU usage even when I run a single threaded user side
>> application which uses this card .
>>
>> I ran hotkernel script from Dtrace toolkit.   A portion of the output is
>> given in the attached file  dtraceDiff.txt. Here I see that lock_delay
>> seems to be the reason for high CPU usage. Looks like it comes from mutex
>> locks
>>
>> This driver uses  mutex locks ( mtx_lock).
>>
>> The CPU usage is very high  on a multicore (Xeon CPU) server node than a
>> dual core (Intel i3) Desktop .
>>
>> It shows 30 to 40 % CPU usage on a Intel i3 ( 2 core 4 threads) and 60 to
>> 70% CPU usage  on a Xeon  CPU with 12 core (24 threads) for same output
>> data rate .
>>
>> I wonder whether usage of mtx_lock is the cause of high CPU usage ? Any
>> pointers or suggestions welcome.
>>
>> Using  FreeBSD 11.1 Release
>>
>> Thanks
>>
>> Steev
>>
>> _______________________________________________
>> freebsd-hackers@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org
>> "
>>
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAKsGTHT-KnKHGDCOaECq_B6_5=RWdHeqfoP1fmLU5k1dOGKRvg>