[ドキュメント/cpu-load.txt
smallhog.c
]には、LKML.orgのリンクされたスレッドによると、CPUを大量に消費することができ、カーネルにはCPU使用率の数パーセント以下を報告するサンプルプログラムが含まれています。現在システムでコンパイルして実行してみました。カーネルは、プログラムのCPU使用量が約80%と報告します。だから状況が少し変わったと思います。
源泉:Documentation/cpu-load.txt は、Linux CPU ロードが誤解を招く可能性があることを示します。言及されていない新しい(または既存の)軽減はありますか?
しかし、Smallhog.cはまだ一部影響。 「作業時計」によるとperf stat
、本物CPU時間を約100%使用します。ただし、一般的なCPU統計によると、top
CPU時間の80%しか使用していません。の「user」+「sys」も同様ですperf stat
。
特定のシステムが100%CPU使用率を報告しないのはなぜですかsmallhog.c
?
私のカーネルバージョンは5.1.15-300.fc30.x86_64です。
Linuxでは、私のTSCは安定していると言います。
$ sudo perf stat ./smallhog
^C./smallhog: Interrupt
Performance counter stats for './smallhog':
10,072.25 msec task-clock # 1.000 CPUs utilized
235 context-switches # 0.023 K/sec
65 cpu-migrations # 0.006 K/sec
44 page-faults # 0.004 K/sec
28,736,276,128 cycles # 2.853 GHz 75.00%)
18,394,555,284 instructions # 0.64 insn per cycle (74.99%)
3,530,232,530 branches # 350.491 M/sec (75.01%)
58,545,233 branch-misses # 1.66% of all branches (75.01%)
10.076806251 seconds time elapsed
3.481505000 seconds user
4.458544000 seconds sys
$ sudo journalctl -k |grep -iE "tsc|sched_clock"
Jul 09 10:58:25 localhost kernel: tsc: Fast TSC calibration using PIT
Jul 09 10:58:25 localhost kernel: tsc: Detected 2294.623 MHz processor
Jul 09 10:58:25 localhost kernel: clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x21135dc5295, max_idle_ns: 440795305870 ns
Jul 09 10:58:25 localhost kernel: TSC deadline timer enabled
Jul 09 10:58:25 localhost kernel: clocksource: Switched to clocksource tsc-early
Jul 09 10:58:25 localhost kernel: sched_clock: Marking stable (1353126208, 521414)->(1368149024, -14501402)
Jul 09 10:58:25 localhost kernel: tsc: Refined TSC clocksource calibration: 2294.689 MHz
Jul 09 10:58:25 localhost kernel: clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x21139c00f92, max_idle_ns: 440795293667 ns
Jul 09 10:58:25 localhost kernel: clocksource: Switched to clocksource tsc
$ lscpu
...
Vendor ID: GenuineIntel
CPU family: 6
Model: 61
Model name: Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz
Stepping: 4
CPU MHz: 1189.926
CPU max MHz: 2900.0000
...
ベストアンサー1
これは、CPU時間の残りの20%が割り込みに使用されるためです。 :-D。
smallhog
特定のCPUで実行するにはを使用してくださいtaskset -c 0 ./smallhog
。その中で を押してくださいtop
。1結果は次のとおりです。
%Cpu0 : 22.6 us, 56.1 sy, 0.0 ni, 0.0 id, 0.0 wa, 21.3 hi, 0.0 si, 0.0 st
hi
「ハードウェア割り込み」を意味します。