[ltt-dev] use percpu variable for ltt_nesting
Jiaying Zhang
jiayingz at google.com
Wed Sep 3 01:25:34 EDT 2008
Hi Mathieu,
I found lttng sometimes has very poor performance on multiple cpu systems
and it seems
the more processors the system has, the more performance overhead I saw with
lttng enabled.
Here are the results I collected with tbench benchmark (
http://samba.org/ftp/tridge/dbench/).
single processor:
lttng disabled: 236.07 MB/sec
lttng enabled: 210.569 MB/sec
16 processors:
lttng disabled: 4173.83 MB/sec
lttng enabled: 1766.77 MB/sec
After playing with the code for a while and asking around, I found this
performance
issue is caused by the cpu contention while updating the ltt_nesting
variable used
in ltt/ltt-serialize.c:ltt_vtrace:
ltt_nesting[smp_processor_id()]++;
...
ltt_nesting[smp_processor_id()]--;
In the attachment is the patch that changes ltt_nesting into a per_cpu
variable. With the patch applied,
the tbench performance with lttng applied gets to about 3600 MB/sec on the
16 processor system.
Jiaying
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20080902/061f93a9/attachment-0003.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ltt_nesting-percpu.patch
Type: text/x-patch
Size: 2103 bytes
Desc: not available
URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20080902/061f93a9/attachment-0003.bin>
More information about the lttng-dev
mailing list