上部にはCPU使用率が100%と表示されますが、コアアイドル状態は50%ですか?

上部にはCPU使用率が100%と表示されますが、コアアイドル状態は50%ですか?
top - 08:43:16 up 96 days, 22:16,  1 user,  load average: 4.03, 3.92, 3.98
Tasks: 199 total,   1 running, 198 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.5%sy, 50.0%ni, 49.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  3.9%sy, 46.8%ni, 49.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  3.0%sy, 47.5%ni, 49.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  5.0%sy, 45.5%ni, 49.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3593 foldinga  39  19  276m  80m 2972 S  402  1.0  12:55.42 FahCore_a3.exe

ところで、なぜtopはプロセッサの正確に半分がアイドル状態なのにCPUの100%(400%/4コア)を使うと言うのでしょうか?

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 30
model name      : Intel(R) Xeon(R) CPU           X3440  @ 2.53GHz
stepping        : 5
cpu MHz         : 2526.932
cache size      : 8192 KB
physical id     : 0
siblings        : 4
core id         : 3
cpu cores       : 4
apicid          : 6
initial apicid  : 6
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 5054.02
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

編集:i_grokとMax Algininに応答して、サーバーでハイパースレッディングが有効になっていることを確認しました。開いてみるともう上の姿がこんな感じです。同じ症状が現れることに注意してください。

top - 10:17:01 up 47 days, 10:28,  3 users,  load average: 7.93, 7.96, 8.02
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  2.8%sy, 42.0%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  2.2%sy, 42.5%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  1.2%us,  3.7%sy, 95.1%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  1.7%sy, 43.1%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  1.1%sy, 43.6%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy, 44.8%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  2.2%sy, 42.5%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  1.7%sy, 43.1%ni, 55.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8177700k total,  6258704k used,  1918996k free,    29248k buffers
Swap:        0k total,        0k used,        0k free,  5203172k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 8132 foldinga  39  19  557m  99m 3060 S  796  1.2   1510:53 FahCore_a3.exe

答え1

Maxの回答の拡張:ハイパースレッディングを使用するプロセッサは、実際には1つの物理コアしかありませんが、オペレーティングシステムに2つのコアを報告します。 Linuxには4つのコアがありますが、プロセッサには2つの物理コアがあります。

物理コアには高度な予約機能と2番目のスレッドを処理するためのいくつかの追加のトランジスタがありますが、プロセッサ集約型の多くのアプリケーションでは、ハイパースレッディングは実質的な利点を提供しません。

私の分野では、システムで実行されているアプリケーションをベンチマークし、パフォーマンスが低下した場合はBIOSでハイパースレッディングを無効にします。

編集する:

これを使用してコアの半分をロードすると、cat /dev/urandom > /dev/nullCentOS 6を実行している最新のXeonから得られる結果は次のとおりです。

top - 19:32:38 up 1 day,  8:17,  3 users,  load average: 12.13, 8.73, 4.07
Tasks: 694 total,  13 running, 681 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us, 50.4%sy,  0.0%ni, 49.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  49552656k total,  2693452k used, 46859204k free,   186448k buffers
Swap: 15999992k total,        0k used, 15999992k free,   469560k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                           
21193 root      20   0 98.5m  560  452 R 100.0  0.0   6:23.31 cat                                                                                               
21194 root      20   0 98.5m  560  452 R 100.0  0.0   6:22.76 cat                                                                                               
21195 root      20   0 98.5m  560  452 R 100.0  0.0   6:22.38 cat                                                                                               
21201 root      20   0 98.5m  560  452 R 100.0  0.0   6:21.98 cat                                                                                               
21202 root      20   0 98.5m  560  452 R 100.0  0.0   6:21.62 cat                                                                                               
21203 root      20   0 98.5m  560  452 R 100.0  0.0   6:21.36 cat                                                                                               
21206 root      20   0 98.5m  560  452 R 100.0  0.0   6:20.43 cat                                                                                               
21187 root      20   0 98.5m  560  452 R 99.6  0.0   6:24.45 cat                                                                                                
21204 root      20   0 98.5m  560  452 R 99.6  0.0   6:21.03 cat                                                                                                
21205 root      20   0 98.5m  560  452 R 99.6  0.0   6:20.73 cat                                                                                                
21213 root      20   0 98.5m  560  452 R 99.6  0.0   6:20.09 cat                                                                                                
21214 root      20   0 98.5m  560  452 R 99.6  0.0   6:19.70 cat

答え2

4年を過ぎて公平に言えば、私はコピーを受け取ったのを見て、その問題について完全に忘れてしまいました。注目すべき問題その文章。

問題は接線的にハイパースレッディングに関連していますが、回答者に指摘し続けたようにいいえ50%でアイドリングする理由。

その理由は、カーネル動的スケーリング構成の不適切な構成に関連している。私はGentooを実行しており、カスタムカーネルを使用しています。 2012年半ばにカーネルをアップグレードした後、問題は自然に解決されました。

答え3

私はハイパースレッディングがここで問題だとは思わない。次の行のいずれかを見ると、次のようになります。

Cpu0  :  0.0%us,  0.5%sy, 50.0%ni, 49.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

問題は、コアの半分がアイドル状態であるということではありません。コアは50%の時間アイドル状態です!しかし、これと矛盾する点は次のとおりです。

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3593 foldinga  39  19  276m  80m 2972 S  402  1.0  12:55.42 FahCore_a3.exe

つまり、Foldingathomeは4つのコアをすべて最大化します。これは奇妙で、カーネルのCPU統計レポートでバグが見つかったと思われます。試してみることができるものは次のとおりです。

  • 再起動せずに自宅でFoldingを実行してみてください。
  • すべてのコアをフラッディングする別のプログラムを実行し、どの番号を取得するかを確認します。

さらに、Foldingathomeは計算にCPUのみを使用しますか、または計算にGPUを使用しますか?

答え4

AMDデュアルクアッドコア(AMDにはHTと同等のプロセッサがあるため、プロセッサごとに「明らかに」8つのコア)のCentos 6でi_groksを使用してシナリオをテストし、以下のように22のプロセスを実行しました。

cat /dev/urandom > /dev/null

総CPU使用率が約95%で飽和していることが観察されました。上記で再度確認しましたが、総使用量が一貫しています。

追加のプロセスは、競合のために総使用量を増加させません。

コアレベルを見ると、16個の「明白な」コア(物理コアあたり2つの兄弟)がほぼ100%の速度で実行されていることがわかります。

したがって、元々報告された状況/問題を再現することはできません。

関連情報