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:37] – [Where is the bottleneck ?] olivier | documentation:technical_docs:performance [2019/11/21 17:27] – [Disabling Hyper Threading] olivier | ||
---|---|---|---|
Line 90: | Line 90: | ||
Avoid NUMA architecture but prefer a CPU in only one package with maximum core (8 or 16). | Avoid NUMA architecture but prefer a CPU in only one package with maximum core (8 or 16). | ||
- | If you are using NUMA, check that inbound/ | + | If you are using NUMA, you need to check that inbound/ |
=== Network Interface Card === | === Network Interface Card === | ||
Line 104: | Line 104: | ||
==== Choosing good FreeBSD release ==== | ==== Choosing good FreeBSD release ==== | ||
- | Before tuning, you need to use the good FreeBSD version. | + | Before tuning, you need to use the good FreeBSD version... this mean a recent |
- | This mean a FreeBSD -head version older than r309257 (Andrey V. Elsukov 's improvement: | + | |
- | BSDRP since version 1.70 is using a FreeBSD | + | BSDRP is currently following |
+ | ==== Disabling Hyper Threading | ||
- | {{documentation: | + | By default, lot's of multi-queue NIC drivers create one queue per core. |
- | + | But " | |
- | For better (and linear scale) performance there is the [[https:// | + | |
- | + | ||
- | ==== Disabling Hyper Threading ==== | + | |
- | + | ||
- | Disable Hyper Threading (HT): By default, lot's of multi-queue NIC drivers create one queue per core. | + | |
- | But " | + | |
HT can be disabled with this command: | HT can be disabled with this command: | ||
Line 746: | Line 740: | ||
</ | </ | ||
- | 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 764: | Line 758: | ||
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