あなたの経験に基づいていくつかのアドバイスをしたいと思います。私の主な関心事は、コンピュータサーバーがクラッシュすることを本当に望んでいないことです。
問題は、私がLinuxコンピュータサーバー(スーパーコンピュータ?おそらく)でプログラムを実行していることです。私が実行しているプログラムには、使用できるスレッドを指定する機能があります。私は15個のスレッドを使いたいと指定しました。
私が使用しているコンピュータサーバーには、約20以上のプロセッサ(6コアIntel Xeon CPU)があります。上のcで私が使用しているプログラムが実行されていることがわかります。
%CPU
190.7%
そのため、上位 c(1) を確認し、以下は出力です。
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 95.7%us, 0.3%sy, 0.0%ni, 0.0%id, 3.6%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu9 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu10 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu11 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu12 : 96.0%us, 0.7%sy, 0.0%ni, 0.0%id, 3.3%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu13 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu14 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu15 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu16 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu17 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu18 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu19 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu20 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
CPU使用率はCPUによって異なります。たとえば、CPU20が90%に達し、CPU1が0%に戻ることがあります。
CPUを190%使用したため、コンピュータサーバーがクラッシュする可能性はありますか?
答え1
さまざまなツールとシステムは、CPUの割合をさまざまな方法で報告します。 CPUの負荷について考えるより良い方法は、負荷の観点から見ることです。次のような過負荷の労働者システムを検討してください。
# w
02:22:31 up 221 days, 11:06, 1 user, load average: 9.87, 9.50, 7.25
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
stephan pts/0 173.13.169.18 02:22 0.00s 0.44s 0.00s w
~$ cat /proc/cpuinfo |grep processor
processor : 0
processor : 1
つまり、1分負荷は9.87、5分負荷は9.50、15分負荷は7.25です。 「ロード」番号は、このコンピュータがタスクを実行するために割り当てたプロセッサの数を表し、cpuinfoコマンドはタスクを実行するために必要な物理プロセッサの数を示します。 CPUが12個の場合、この負荷レベルはまったく問題になりません。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11579 app 20 0 263m 97m 4104 R 22 1.3 0:00.85 ruby
11586 app 20 0 0 0 0 Z 20 0.0 0:00.62 ruby <defunct>
11589 app 20 0 262m 96m 3884 S 18 1.3 0:00.53 ruby
11592 app 20 0 260m 95m 3000 R 17 1.3 0:00.50 ruby
11600 app 20 0 260m 95m 2744 R 15 1.3 0:00.45 ruby
11595 app 20 0 260m 95m 2744 R 13 1.3 0:00.39 ruby
11598 app 20 0 262m 95m 3096 R 12 1.3 0:00.35 ruby
11604 app 20 0 258m 93m 2744 R 10 1.3 0:00.30 ruby
11607 app 20 0 257m 92m 2496 R 8 1.2 0:00.25 ruby
11610 app 20 0 256m 91m 2560 S 4 1.2 0:00.11 ruby
そうすれば、CPUがプロセス間で分かれているのがわかります。これにより、キュー内のジョブは、CPUを使用する前にCPUがアイドル状態になるまで待つ必要があります。
答え2
%CPUは1つのCPUに基づいて測定されるため、200%は2つのCPUがフルタイムで動作することを意味します。すべては、保持しているCPU(コア、スレッド)の数によって異なります。利用可能なリソースの約70%以上を使用している場合、問題が発生します。ただし、CPUだけが唯一の指標ではなく、I / Oも重要です。懸念がある場合はsysstat
(sar
)をインストールして設定した後、出力を理解してください。