アプリケーション(CPUのリソースを使用している)が遅れている場合でも、CPUが最大限に動作しないのはなぜですか?


30

CPUの40%を消費するアプリケーション(ただし、CPUの30〜40%がまだアイドル状態にある)が遅れている場合でも、CPUが最大にならないのはなぜですか?

それは〜を意味しますか:

  1. CPUを100%で強制的に実行する方法があります
  2. CPUはそのように製造されており、私ができることは新しいハードウェアを購入することだけです。
  3. 制限はアプリケーションにあり、CPUが向上しても遅延は改善されません。(アプリケーションが完璧であると仮定して、私が尋ねているのは、ソフトウェアがそのように動作するかどうかです?)
  4. 他の何か。

4
私はOPが何を得ているのか理解していますが、ウイルス対策またはWindowsアップデートが実行されているときにシステムが完全に停止し、単一のコアを最大限に活用する方法を軽iseしています...残りの部分は何をするのですか?仕事に戻るまで12分間座っていました。

10
任意のコンピュータ(CPU、ストレージ、メモリ、またはネットワーク)でいくつかの共有リソースのうち一つでもmaxesが未使用の容量を有する残りの共有リソースにもかかわらず、遅いシステム全体を作ることができるアプリケーション。
私は復活モニカ言う

78
私は25年間プログラミングを行ってきました。そして、私はあなたを保証することができます-これは陰謀ではありません。CPUがボトルネックになっているアプリケーションを見つけることはまれであり、ほとんどの場合、アプリケーションはハードドライブ、RAM、ネットワークなどの他のものを待機しています。
コンタンゴ

10
あなたが計算作業をしていると仮定します-あなたの税金をやって、言うことができます。納税申告書が郵便で届くのを待っている間に仕事をしなければ、長時間、仕事をしません。遅延アプリケーションは、多くの場合、不適切に記述されています。ディスクやネットワークIOなど、CPUとは関係のない高遅延操作でUIスレッドをブロックするため、CPUはアイドル状態になり、アプリは応答しません。より高速なCPUを得ることは役に立ちません。これにより、高遅延操作をより速くブロックできます。
エリックリッパー

3
@TwistyImpersonator:これは、競合の多いマルチスレッドプログラムの良い例えです。CPUが低速のCPU より多くのスレッドをより速くブロック状態にするため、マルチスレッドプログラムはより高速のCPUで低速に実行されることがあります。明日、ニューヨークのすべてのドライバーに10倍速い車が与えられた場合、通勤時間は改善されません。彼らは悪化します。
エリックリッパー

回答:


94

おそらく、単一のCPUコアしか使用できないシングルスレッドアプリケーションを実行しているでしょう。1つのコアの100%がマルチコアCPUの容量の100%未満であるため、合計 CPU使用率は100%に達しません。

これを確認するには、タスクマネージャーで個々のコア使用率を表示します。最大使用率に近づいているシングルコアを探します。


24
切り替えのため、1つのコアの使用に要約される分散使用のみが表示されます。基本的に、アプリは正確に1つのコアを使用しますが、コア間をホップするため、各コアは平均して1 / nになります。
アガンジュ

62
CPUが実際にボトルネックではない可能性もあります。

16
Dwarf Fortressは1つのコアを100%でボトルネックにしたことをよく覚えているので、他のビットを2番目のスレッドに分岐し、100%でロックされた「メイン」スレッドと20-60%前後の「バックグラウンド」スレッドにつながりました。クアッドコアでは、30〜40%です。
ダックMooing

3
CPUのターボモードを忘れないでください。負荷率を計算するとき、Taskmanagerはそれを考慮しません。i5-4570Sでは、約30%の負荷が頻繁に発生します。これは、通常の2,9 GHzが3,4 GHzにターボ化された1つのコア(25%)です。25 * 3,4 / 2,9はほぼ30%です。通常の周波数とターボ周波数の間の拡散が大きいと、より高くなる可能性があります。
-Sunzi

7
@AytAyt-さらに一歩進んで、それが可能であるだけでなく、ほぼ確実だと言います。OPのアプリケーションが純粋な数値計算(またはあらゆる場所でスピンロックを使用)を行っていない限り、マルチスレッドプログラムであってもCPUを完全にロードすることは実際には非常に困難です。ディスクまたはネットワークI / Oはアイドルサイクルのままになり、OPが「遅れている」アプリについて言及していることを考えると、何らかのネットワーク通信が行われている可能性があります。
アロス

49

OSを指定していません。そのため、答えは次のようになります。

アプリケーションはさまざまな理由により制限される場合があります。ボトルネックは次のとおりです。

  • CPU
    • 低速
    • シングル/低スレッドアプリ(すべてのコア/スレッドを使用できない)
  • I / O
    • ディスクスループット
    • ディスク遅延
    • ネットワークスループット
    • ネットワーク遅延
  • 記憶
    • 容量
    • スループット
    • 待ち時間
    • 不十分なキャッシュ
    • ローカリティ(NUMA)
    • スワッピング

そして、それほど一般的ではない多くの理由があります。

したがって、システムリソースを見て、CPUの総負荷だけでなく、他のボトルネックがないかシステムを分析してみてください。


9
また、ビデオカードには個別のGPU、I / O、およびメモリがあり、これらのいずれかが問題になる可能性があります。
ダックMooing

2
@MooingDuck本当ですが、問題のアプリケーションが実際にGPU(3DゲームやCUDA / OpenCLアプリなど)を使用している場合にのみ問題になります。
reirab

13

一般的に、人々が自分のコンピューターが遅いと話すとき、私は塵に言及します。15年のプロの経験を持つ元コンピューターテクノロジーとして、埃を吹き飛ばすだけでパフォーマンスが大幅に向上することがわかりました。

私は薄い、ほとんど感知できない量のほこりについてではなく、通常の空気の流れを妨げる大きな塊またはマットですら話します。基本的に、実際のフィルターではなく、ほこりのフィルターが付いているヒートシンクを見てきました。これにより、大量の空気がCPUを冷却するのを防ぎます。このようなほこりを取り除くと、すぐにファンが静かになり、コンポーネントの寿命が長くなります。熱は、私に修正を求められた多くのコンピューターを殺しました。

熱問題のアイデアに沿って、より良いサーマルペーストを試すこともできます。ほとんどのプロセッサに付属している白いcr @ pは、サーマルペーストのYugoのようなものです。Arctic Silverを使用していますが、それよりも優れたものがあります。アークティックシルバーはポルシェ(車の評価尺度を使用)についてですが、フェラーリやスーパーカーの種類があります。

プロセッサは、過熱すると速度が低下する傾向があります。これは物理的なものであり、多くのCPUにプログラムされた「自己保存」です。タスクマネージャーに100%と表示されるのか、それとも40%と表示されるのかはわかりません(ご覧のように)が、CPUがヒートシンクとファンを動かそうとすると大幅に遅くなる可能性があります追いつく。"

CPUの速度が低下する可能性があるもう1つのことは、GPUです。グラフィックを多用するゲームやユーティリティ(CADなど)を実行している場合、GPUがCPUを抑制している可能性があります。より良いビデオカードを入手することは、注目すべきことかもしれません。また、間違った正しいカードを使用すると、あなたを阻む可能性があります。ゲームカードは(通常)CADやワークステーションカードで動作するようには設計されていません。また、ワークステーションカードも(通常)あまりうまく動作しません。いくつかはそうですが、ほとんどはそうではありません。

@Jaroslav Kuceraが述べたように、それはディスクに関連している可能性があります。HDを何度も押すと、速度が低下する可能性があります。通常、複数のドライブを実行します。1つはOS専用で、もう1つはソフトウェア、Windowsページファイル、個人ファイルなどに使用します。OS障害が発生した場合に個人データのバックアップについてあまり心配する必要がないことに加えて、複数のHDがあると作業負荷が大幅に広がります。同じディスクへの読み取りと書き込みを同時に行うと、HDの速度が著しく低下する可能性があります。SHDを使用すると、これを軽減できますが、完全には軽減できません。Photoshopおよびビデオ編集ソフトウェアは、HDに大きな打撃を与えることが知られています。1つのHDから読み取り、2番目のHDに出力するのが方法です。これは、HDの寿命にも役立ちます。また、HDのアクティブ冷却も行っています。+15年前にファンとヒートシンクを取り付けて以来、ハードドライブを殺していません。Google、それらは安い保険です。

信じられないかもしれませんが、あなたのPSUもあなたを遅くしているかもしれません。十分な電力がない場合(または、PSUが古くなっているか、安価で過大評価されている中国のPOS)、パフォーマンスの問題が発生する場合があります。私は、不安定なPSUが奇妙なOSの問題によって何ができるかを直接目にしました。電圧だけでなくアンプも探しているので、このルートを使用する場合は、すべてがPSUの仕様に一致していることを確認し、電力ニーズを満たしていることを確認してください。コンポーネントの合計が500ワットであり、475ワットを供給している場合、それは悪いことです。要件を約20%超えることをお勧めします。そうすれば、PSUが古くなって(電力が低下して)他のコンポーネントが古くなって(そしてモート電源が必要になる)、新しいPSUをすぐに購入するのが難しくなりません。

ここに他の答えを含めて、コンピューターが遅くなる理由はまだあります。PSUオプションを除いて、私が話したことは、私がコンピューター技術者だったときによく見られました。ベンチマークや他のテストを行うことが、物事を理解できる唯一の方法です。部品を交換しても、複数の部品が組み合わさって速度が低下する場合は、問題が解決しない場合があります。

そして、知る限り、コンピューターにプロセッサーの100%を強制的に使用させる方法はありません。CPUとOSは、何をする必要があるかを知っており、通常は自分の仕事が本当に上手です。:-) CPUに100%で実行するように強制する方法を考え出した人はまだいないと思います。少なくとも、割合を「見栄えよくする」ために余分なジャンクを与えずに。

40%ではなく、100%の整数除算(25%、33%、50%など)が表示されているので、単一のスレッドの問題ではないと感じています。それは可能性がありますが、それは私の心が行くところではありません。ただし、すぐに表示してくれた@Twisty Impersonatorに+1します。

これを理解しようとして頑張ってください!私はこの種のことを理解しようとして何日も費やしましたが、最終的にはほとんどの内臓を「最後の手段」として置き換えました。


1
+1は、アプリケーションが最大出力のGPUにハングアップする可能性を指摘するために。
私は言う

6
言及するのを忘れましたが、あなたのコンピューターの近くで喫煙することはあなたができる最悪のことの一つです。オレンジ色がかった粘着性の混乱があり、それをきれいにすることはできません。ほこりは固まり、掃除することができなくなります。オートパーツオイルバスまたはソニックウォーターバスを使用してそれを降りることができるかもしれませんが、私はそのトラブルを経験しませんでした。ケースをきれいにすることさえ無益な努力です。
computercarguy

2
開発者の観点からすると、CPUはユーザーが指示したことをすべて実行します。100%に制限されていない場合、プログラムが他の処理(ディスクIO、ネットワーク、ユーザー入力、システムメッセージなど)を待機しているためです。CPUが実行できる処理がある場合、自動的に100%を使用して(マルチスレッドアプリケーションを想定)プログラムが必要とすることを実行します。100%を使用したり、ロックを解除したりする必要はありません。
-JPhi1618

2
@ JPhi1618:熱を忘れています。CPUが過熱している場合、実行するように指示した内容に関係なく、CPUは100%をはるかに下回る速度で実行されます。
ダックMooing

9
@ JPhi1618 CPUは通常、周波数のスケーリング(アンダークロック)によって調整されるため、3.0GHzで実行する代わりに、たとえば2.0GHzで実行します。そのため、すべての「ワークスロット」が占有されているため、熱的にスロットルされたCPUは100%の負荷を報告する可能性があります。
-el.pescado

3

BIOSまたはオペレーティングシステムのいずれかの省エネ設定である可能性があります。最近の多くのCPUとマザーボードには、CPUを電気の使用により経済的にするための設定があります(特に、バッテリーを長持ちさせたいラップトップの場合は特にそうです)。おそらくこのような設定をオフにすることはできますが、設定の隣には通常、他の重要な方法でコンピューターの機能に影響を与える可能性のある他のものが存在するため、何をしているかを確認してください。


2

レンダリングと数学のタスクを行うとき、私は定期的に100%の使用率に達します。ハイパースレッディングが100%を超えることを確認し、命令の順序付けは大したことです。IntelとAMDの両方には、可能な限り多くの実行コアを満たすために、命令の並べ替え専用の大量のハードウェアがあります。最新のマシンで30%を取得している場合は、

  • 温度を確認-IntelとAMDは両方とも、高温になるとダウンクロックし、スタッターやスパイクとして表示されます。
  • あまりやってはいけません。
    1. ウェブブラウジング
    2. Eメール
    3. 最もシンプルなゲーム
    4. 私は、あなたの問題が最初から以下のいずれかまたはすべてであることをほぼ保証します。
  • SSDを入手する
  • SSDを入手する
  • OSをSSDで取得し、通常のデータを従来のマルチTBドライブに移動します。Windowsは、何よりもローカルファイルにアクセスする必要があります。
  • ボナザイバディ?
  • すべてのドライブを少なくとも10%以上の容量に保ちます。NTFSはジャーナリングファイルシステムであり、ドライブがフルになるとパフォーマンスが低下します。
  • OSのドライブにはできるだけ早くNVMeドライブ/ SSDが必要です(そう、もう一度言いました)。パフォーマンスは驚くべきものであり、このパート2に続きます。大手小売業者は、Samsung 961 NMVe 512GBドライブを今日300ドルで販売していました。
  • Windows 10はGPUに負荷がかかります。安価な専用ビデオカードは、メモリとCPUの両方の負荷を軽減できます。ビデオカードと組み合わせてAPUを使用することはできますが、RAMをいくらか節約でき、VRAMは一般にはるかに高速です。
  • コアカウントの低いCPUもメモリバウンドです。i7を見ると、それらはすべて4つのバンクでクアッドチャネルDDRを実行しています。AMDのEpycチップは、64コアの8チャンネルDDR5になります。助けにはなりません。最後に、これを十分に強調することはできません。マシンが使用するのと同じ量のRAMにお金をダンプします。私は32GBを持っていますが、今年後半にはさらに32GBを購入しています。Windowsは、使用されていないRAMのメモリを圧縮するスーパーフェッチに似た動作を行うため、必要なときにプログラムとデータを解凍できます。別の例として、開発用にLinux VMを実行し、6/12コアと16GBのRAMを割り当て、SSDからの最初のロード後、約3秒で起動します。CPUは最近、そのような最適化により非常に安価であると考えられています...

70kのファイルプロジェクトをコンパイルしたり、巨大なCamera Rawファイルを16ビットカラーで17 "x26" x600 dpiにアップスケールしたりするまで、このようなことはすべてやり過ぎのように思えます。使用率が100%であっても、リソースは過剰に使用されるため、速度が低下することはありません。先日、2台のVMと2台のIDEを搭載したWolf 2が搭載されていることに気付きました(気が散ったので、私を訴えました)。これは約$ 1500のマシンBTWであり、特別なものは何もありません。私のビデオカードは6歳だったため、その半分はRadeon RX64の1つです。レンダリングなどの大きな違い。アップグレードすることで、30%の使用で十分であると想定するよりも、ハードウェアをより多く使用できます。

OS用にこのマシンに5400RPMのハードドライブを投入すると、まるでがらくたのように動作します。

TL; DRあなたは今、CPUに縛られているように聞こえます。OS用に少なくとも256GBのSSD、8GBのRAM、ローエンドのゲーマーカードに数百を費やすと、コンピューターは何年も続きます。プロセッサとMoboの更新を最終的に行う前に、これは6年間存続し、クロスコンパイラスイート全体を1日約25回古いギアでコンパイルしていました。

私をやり過ぎと呼んでも、8テスラカードなどはお勧めしません。:-)可能であればマイナーアップグレードを行い、これらの問題の多くを解決できると思います。何年も前に、SSDをQ6600システムに追加し、パフォーマンスを3倍に見ました。


1

プログラムの詳細を知らなくてもわかりにくいですが、別の答えはアプリケーションがシングルスレッド化される可能性を検討しているので、アプリケーションが適切なマルチスレッドを使用しているかのように見ます。

見落とされる一般的なことは、物理コアと「ハイパースレッドコア」です。ハイパースレッディングは、CPU以外のボトルネックを持つ多くの短いタスクで優れています。タイトループCPUボトルネックタスクの場合、物理コア数によって制限されます。これは通常、ハイパースレッドコア数の半分です。最悪のシナリオでは、タスクマネージャーはグラフでハイパースレッドコアをカウントするため、実際には物理コアの使用率が100%である場合でも、使用率が50%しか表示されない場合があります。ただし、一般的には、オペレーティングシステムが他の無関係なタスクにハイパースレッディングを使用できるため、それ以上を表示します。


「適切なマルチスレッド」とは、すべての物理コアではなく、すべての論理コアに対して実行する作業を持つスレッドを持つことを意味しませんか?すべての論理コアでタイトループを実行している場合、タスクマネージャーはハイパースレッドで100%を報告する必要があります。AFAIK、タスクマネージャーの「使用率」は、問題のスレッドが実行可能状態であり、論理コアでスケジュールされた時間に基づいています。実際にALUで何かをした時間とは限りません。OSはおそらくそのことすら知らないでしょう(CPUマイクロコードだけが知っています)
reirab

1
「通常の」マシンコードは、最新のCPUの6つ以上の命令ポートのうち2〜3のみを使用します。ブランチおよびキャッシュミスが原因で発生するすべてのパイプラインストールは言うまでもありません。ハイパースレッディングは、これらのギャップを埋めるのに役立ちます。それを使用することはほとんど常に勝利です。ビデオのエンコード/デコードや高度に最適化された行列演算など、一部のタイプのコードはそれでうまくいきません。しかし、それらは異常です。
ザンリンクス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.