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/null
CentOS 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%の速度で実行されていることがわかります。
したがって、元々報告された状況/問題を再現することはできません。