User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
documentation:technical_docs:performance [2019/03/26 00:22] external edit
documentation:technical_docs:performance [2019/07/17 17:32] (current)
olivier [Where is the bottleneck ?]
Line 746: Line 746:
 </​code>​ </​code>​
-On this case the bootleneck is just the network stack.+On this case the bootleneck is just the network stack (most of the time spend into function ip_findroute called by ip_tryforward).
 == CPU cycles spent == == CPU cycles spent ==
Line 761: Line 761:
 <​code>​ <​code>​
 pmcstat -z 50 -S cpu_clk_unhalted.thread -l 20 -O /​data/​pmc.out pmcstat -z 50 -S cpu_clk_unhalted.thread -l 20 -O /​data/​pmc.out
 +pmcstat -R /​data/​pmc.out -z50 -G /​data/​pmc.stacks
 +less /​data/​pmc.stacks
 </​code>​ </​code>​
-Then analyses ​the output with: +=== Lock contention source === 
-<​code>​ + 
-fetch http://​BSDRP-release-debug +To identifying lock contention source (like if function lock_delay or __mtx_lock_sleep was quite high from the pcm output), you can try to search which lock is contended and why with lockstat. 
-tar xzfv BSDRP-release-debug.tar.xz + 
-pmcannotate /​data/​pmc.out /​data/​debug/​boot/​kernel/​kernel.symbols +You can generate 2 output
-</​code>​+  * contented locks broken down by type: <​code>​lockstat ​-x aggsize=4m sleep 10 > lock-type.txt</​code>​ 
 +  * stacks associated with the lock contention to identify the source: <​code>​lockstat ​-x aggsize=4m ​-s 10 sleep 10 > lock-stacks.txt </​code>​
documentation/technical_docs/performance.1553556169.txt.gz · Last modified: 2019/03/26 00:22 by