+5
−0
+46
−1
Loading
Current parse_proc_stat() is Linux-specific yet it's being called unconditionally. This leads to confusing NOTICE()s under non-Linux systems, like FreeBSD: spdk_app_start: *NOTICE*: Total cores available: 2 app.c: 952:spdk_app_start: *NOTICE*: Unable to parse /proc/stat [core: 0]. app.c: 952:spdk_app_start: *NOTICE*: Unable to parse /proc/stat [core: 1]. reactor.c: 996:reactor_run: *NOTICE*: Reactor started on core 0 reactor.c: 996:reactor_run: *NOTICE*: Reactor started on core 1 To avoid this confusion add parse_proc_stat() variant dedicated to FreeBSD. Similarly to reading Linux's /proc/stat, the FreeBSD variant fetches accumulated number of cpu ticks for different states by reading sysctl's kern.cp_times node, e.g.: # e.g for 2 CPUs $ sysctl kern.cp_times kern.cp_times: 37924 0 2593 961 9270910 19400 0 1341 4 9291643 Output is formatted as a single line holding 5 states per cpu: user nice system interrupt idle Similarly to Linux-based variant, we fetch user, system and interrupt counters. Note that kern.cp_times doesn't account separately for soft irqs as in case of Linux's /proc/stat. Change-Id: I36eea531dee4aace2aad18ed346659b3c9dacd08 Signed-off-by:Michal Berger <michal.berger@nutanix.com> Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26379 Reviewed-by:
Konrad Sztyber <ksztyber@nvidia.com> Tested-by:
SPDK Automated Test System <spdkbot@gmail.com> Reviewed-by:
Tomasz Zawadzki <tomasz@tzawadzki.com> Community-CI: Mellanox Build Bot