
不要なときに実行されるCPU使用量警告があります。
/proc/stat
紙の成長と紙の全体的な成長を読んで比較していました。増加率が十分に高いとビープ音が鳴ります。私は計算に入れません。周りに良いプロセスがありますが、必要に応じてこれらのプロセスが予定されていなくても、重要なプロセスは続行できてうれしいです。user
system
nice
ところが、アラームが発生すると%user
全く上昇がない場合がよくあります。しかし、増加し%nice
、%system
いくつかの良いプロセスはカーネル操作をトリガーします。
私の質問は次のとおりです
- より重要なプロセスにCPU時間が必要な場合は、良いプロセス(およびそのプロセスがトリガーするカーネルタスク)のスケジュールがキャンセルされるのは正しいですか?
%system
良いプロセスによって引き起こされた金額がどのくらいになるかをどうやって知ることができますか?
現在CentOS 6(2.6.32)を実行していますが、将来のバージョンでこの問題が修正されたらバックポートを考えてみましょう!
答え1
これはおそらく、良いプロセスが何をするか、特に問題を引き起こすシステムコールの数と、問題を呼び出すシステムコールに依存します。これはnotnice.asm
、システム時間の面でほとんど最悪の動作を示す可能性のある悪いプログラムです。
# Linux, x86_64, NASM
bits 64
section .data
letter: db "n"
section .text
global _start
_start: mov rsi,letter
mov rdi,1 ; stdout
mov rdx,1 ; length
_again: ; on assumption above not unset by syscall...
mov rax,1 ; sys_write
syscall
jmp _again
以下を実行しても、nice -n 19
システム時間は継続して実行する必要があります。
$ nasm -f elf64 notnice.asm -o notnice.o
$ ld notnice.o -o notnice
$ nice -n 19 ./notnice >/dev/null
top
その後、このプロセスは非常に厳しいループにあるため、CPUの100%を占めていることを確認する必要があります。少なくとも忙しい他のcentos7テストホスト(それぞれ4つのCPUがある/proc/cpuinfo
)の場合、システム時間の約〜20%です。 5%はかなり良好で、その他のアイドル状態は次のとおりです。
%Cpu(s): 0.1 us, 19.1 sy, 5.9 ni, 74.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
この場合、システム時間の約100%が悪いプロセスによって引き起こされます。この実行により優先度の高いプロセスを実行し、システムの負荷がどのように変更されるか(おそらくSystemTapなどを使用して)確認するか、高速ファイルsys_write
システムに出力し、優先度の高いプロセスによってI/O速度が変更されるか確認することもできますnotnice
。notnice
...)
SystemTap は、以下により、より良い粒度を提供できます。https://sourceware.org/systemtap/examples/general/stopwatches.stpただし、これを行うには、録音の開始時にプロセスがユーザースペースにある必要があります。