web-dev-qa-db-ja.com

マルチコア=より良いマルチタスク?

具体的には、i5-3570kまたはFX-8350のいずれかを検討していますが、複数のコアが一般的なマルチタスクをどのように改善できるかについて、より一般的な具体的な質問を考えさせられました。

多くのレビューやベンチマークなどを読んでいますが、基本的に同じことを言っています。アプリケーションが4コア以上を利用するように特別にコーディングされていない限り、ほとんどのアプリケーションでは、クロックの速い4coreI5がクロックの遅い8coreFXよりも優れています。ゲームは特にi5でより良く動作します。

しかし、読んでいると、ほとんどすべてのベンチマークが真空で行われていることに気づきました。つまり、テストされているのはそのベンチマークまたはソフトウェアだけです。しかし、それはその特定のソフトウェアをテストするのに適していますが、実際のシナリオではありません。

たとえば、1日のどの時点でも、PhotoshopやVisual Studio、いくつかのバックグラウンドプログラム(ウイルス対策、Steam、keepassなど)など、いくつかのタブでいくつかのブラウザを開いている可能性があります。そして、それは明るい日です。

だから私の質問は:理論的には、より速い4coreはそれ自体で個々のソフトウェアをより速く実行しますが、8coreプロセッサは、必ずしも8coreが同時に最適化されていなくても、複数のソフトウェアを実行するのに優れているのではないでしょうか?

3
Taylor Huston

LinuxのCPU負荷

有用な手段の1つは、Linuxの概念 CPU負荷 です。基本的に、各CPUコアは1.00の使用可能なロードユニットであり、各タスクはコアの100%で実行されている1.00のロードユニットであると考えてください。処理集約型サーバーの場合、理想的な負荷はおそらく正確にCPUコアの数です(4つのCPUコアに対して4.00の負荷)。

ビジーループ(「while(true)」のようなもの)は、1つのCPUの100%、つまり1.00ロードユニットを占める可能性があります。シングルスレッドベンチマークも1.00でピークになります。マルチコアに最適化されたベンチマークは、FX-8350で利用可能な8.00まで、より多くのコアを使用する可能性があります。

ただし、ほとんどのアプリ(Chrome + Firefoxオープン、Photoshop、Visual Studio)は、バックグラウンドで実行しているときにそれほど多くのCPUを消費しません。確かに、これらは複数のコアで実行できますが、使用可能な時間の10%(0.10ロードユニット)しか使用しない場合、これら4つのアプリの合計ロードは0.40になり、複数のCPUコアを使用してもほとんどメリットはありません。同様に、ディスクまたはネットワークアクセスでのブロッキングでビジーなアプリケーションは、待機中にCPU時間を使用しません。

平均負荷> 4.00

アプリケーションの負荷が4.00〜8.00の場合、FX-8350のパフォーマンスが際立つ可能性があります。 4コアCPUに5.00の負荷がかかると、CPUリソースの競合が多く発生し、タスク間のタスク切り替えによってオーバーヘッドが増大する可能性があります。

平均負荷<4.00

あなたの質問は、数学がそれほど明確ではない時代についてのようですが、4.00未満のワークロードで8コアの方が良いかどうかです。かなり一定のサーバータイプのワークロードの場合、いくつかのベンチマークを実行して、実際に何らかの利点があるかどうかを確認できます。絶えず変化する日々のコンピューティングワークロードの場合、明確な勝者はありません。

2
trapezoid

それは、アプリケーション、OS、およびその作業の実行方法に大きく依存します。

アプリケーションがシングルスレッドになるように設計されている場合、追加のコアはそのパフォーマンスに役立ちません。ただし、オペレーティングシステムがこの方法で作業を分散するのに十分スマートであれば、他のコアを使用して追加のアプリケーションを実行できます。したがって、コアを追加すると、特に複数のアプリケーションを同時に実行する場合に、わずかな追加のメリットが得られる可能性があります。

追加のコアは、それ以上のI/O機能を提供しません。したがって、アプリケーションのほとんどがI/Oバウンドである場合、追加のコアによるパフォーマンスの向上はそれほど大きくない可能性があります。

1
LawrenceC