diff --git a/doc/CPU.md b/doc/CPU.md new file mode 100644 index 000000000..82c0a752c --- /dev/null +++ b/doc/CPU.md @@ -0,0 +1,60 @@ +# CPU backend + +All CPU related settings contains in one `cpu` object in config file, CPU backend allow specify multiple profiles and allow switch between them without restrictions by pool request or config change. Default auto-configuration create reasonable minimum of profiles which cover all supported algorithms. + +### Example + +Example below demonstrate all primary ideas of flexible profiles configuration: + +* `"rx/wow"` Exact match to algorithm `rx/wow`, defined 4 threads without CPU affinity. +* `"cn"` Default failback profile for all `cn/*` algorithms, defined 2 threads with CPU affinity, another failback profiles is `cn-lite`, `cn-heavy` and `rx`. +* `"cn-lite"` Default failback profile for all `cn-lite/*` algorithms, defined 2 double threads with CPU affinity. +* `"custom-profile"` Custom user defined profile. +* `"*"` Failback profile for all unhandled by other profiles algorithms. +* `"cn/r"` Exact match, alias to profile `custom-profile`. +* `"cn/0"` Exact match, disabled algorithm. + +```json +{ + "cpu": { + "enabled": true, + "huge-pages": true, + "hw-aes": null, + "priority": null, + "asm": true, + "rx/wow": [ + -1, + -1, + -1, + -1, + ], + "cn": [ + 0, + 2 + ], + "cn-lite": [ + { + "intensity": 2, + "affinity": 0 + }, + { + "intensity": 2, + "affinity": 2 + } + ], + "custom-profile": [ + 0, + 2, + ], + "*": [ + -1 + ], + "cn/r": "custom-profile", + "cn/0": false + } +} +``` + +### Intensity +This option was known as `low_power_mode`, possible values is range from 1 to 5, for convinient if value 1 used, possible omit this option and specify CPU thread config by only one number: CPU affinity, instead of object. +