documentation:technical_docs:performance
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
documentation:technical_docs:performance [2019/06/27 01:35] – [Where is the bottleneck ?] olivier | documentation:technical_docs:performance [2019/07/17 17:32] – [Where is the bottleneck ?] olivier | ||
---|---|---|---|
Line 746: | Line 746: | ||
</ | </ | ||
- | 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: | ||
< | < | ||
pmcstat -z 50 -S cpu_clk_unhalted.thread -l 20 -O / | pmcstat -z 50 -S cpu_clk_unhalted.thread -l 20 -O / | ||
- | pmcstat -R / | + | pmcstat -R / |
less / | less / | ||
</ | </ | ||
+ | |||
+ | === Lock contention source === | ||
+ | |||
+ | 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. | ||
+ | |||
+ | You can generate 2 output: | ||
+ | * contented locks broken down by type: < | ||
+ | * stacks associated with the lock contention to identify the source: < |
documentation/technical_docs/performance.txt · Last modified: 2020/01/18 01:04 by olivier