Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxでタスクセットを使用してCPUコアを割り当てる方法

Linuxでタスクセットを使用してCPUコアを割り当てる方法

マルチコア処理には長所と短所があり、最高のパフォーマンスを得るには、CPUコアをプログラムに手動で割り当てる必要がある場合があります(別名「CPUアフィニティ」)。 Linuxでは、主要なツールはタスクセットです。恐ろしいことのように聞こえますが、プロセスを簡素化するために簡単な手順に分けて説明します。

タスクセットの基本

タスクセットの使用は、起動するプログラムと既に実行されているプログラムとのCPUアフィニティの2つの部分に分けることができます。プログラムの起動は2つのうちで簡単なので、そこから始めます。起動コマンドは次のようになります:

taskset -c cpu-core-number(s) application

割り当てるCPUコアの番号を入力する前に、Unixの番号付けスキームは通常0から始まることを忘れないでください。したがって、最初のコアは0、2番目のコアは1というようになります。したがって、デュアルコアマシンにはコア0と1があり、クアッドコアマシンにはコア0、1、2、および3があります。

デュアルコアシステムでAudacityを実行し、2番目のコアで実行したいとします。そのコマンドは次のようになります:

taskset -c 1 audacity

複数のコアの使用

私たちのマシンの1つでは、Chromeはビデオをストリーミングするときにフレームをドロップすることがありましたが、2つのコアに割り当てられるとそれ自体が動作しました。クアッドコアシステムで同じことを試し、Chromeをコア3と4に割り当てたい場合、コマンドは次のようになります。

taskset -c 2,3 google-chrome

シーケンシャルコアにCPUアフィニティを割り当てる必要はありません。任意のコアをランダムに選択できます。 6コアのマシンがあり、コア2と6でChromeを使用したいとします。次のコマンドを入力します:

taskset -c 1,5 google-chrome

ダッシュを使用して、アプリケーションを複数のコアに分散させることもできます。たとえば、多くの古いプログラムやシステム機能は、最初のコアでデフォルトになります。大規模なアプリケーションを他のすべてのコアに分散させながら、最初のコアを可能な限り無料のままにしておきたい場合はどうなりますか?

8コアのシステムがあり、2番目のコアから8番目のコアまでSteamを実行したいとします。そのコマンドは次のようになります:

taskset -c 1-7 steam

すでに開始されているプログラムとの親和性の変更

タスクセットは、単にアプリケーションを起動することに限定されていません。すでに実行されているプログラムのCPUアフィニティを変更することもできます。ただし、アプリケーションのアフィニティを変更する前に、まずそのプロセスID(または略してPID)を知る必要があります。

アプリケーションのPIDを確認するには、デスクトップのシステムモニターを使用してみてください。ただし、最も簡単な方法は、topを使用することです。 。当然のことながら、次のコマンドを使用します:

top

実行中のすべてのコマンドの名前は、画面の右側にあります。対応するプロセスIDは左側にあります。

Linuxでタスクセットを使用してCPUコアを割り当てる方法

すぐに使用するので、PIDを書き留めます。この例では、VLCを使用します。これは、6コアの古いPCで高解像度のMatroskaビデオを再生している最中です。 VLCから最高のパフォーマンスを引き出すために、さまざまなCPUアフィニティを試しています。

既存のプロセスのアフィニティを変更するには、構文は次のようになります。

taskset -cp core-numbers PID

上のスクリーンショットを見ると、VLCのプロセスIDは20485です。4、5、6番目のコアでVLCを実行してみます。これは、Unixでは3〜5の番号になります。したがって、その後のコマンドは次のようになります。

taskset -cp 3-5 20485

しかし、変更する前に既存のアフィニティを確認したい場合はどうでしょうか。そのためには、コア番号を入力しないでください。タスクセットによって、アフィニティがどのように割り当てられているかがわかります。したがって、最後のコマンドを次のように変更すると:

taskset -cp 20485

これは、VLCがすべてのコアに分散していることを示しています。

Linuxでタスクセットを使用してCPUコアを割り当てる方法

別のプログラムでもう一度試してみましょう。代わりにSMPlayerで大きなMatroskaを実行していて、SMPlayerがすでに起動されているとします。トップは、PIDが16058であると言います。

Linuxでタスクセットを使用してCPUコアを割り当てる方法

しかし、最初に、その既存の親和性を知りたいと思います。 -cpでコマンドを使用する スイッチはありますがコア番号はありません。現在、アフィニティがすべてのコアに分散していることがわかります。

Linuxでタスクセットを使用してCPUコアを割り当てる方法

これで、次のコマンドを使用して、VLCの実験と同じ3つのコアにSMPlayerを分散させることができます。

taskset -cp 3-5 16058

簡単ですね。 PCのベンチマークを検討している場合は、CPUのストレステストに役立つ8つのツールに関するガイドを確認してください。


  1. MicrosoftOneDriveをLinuxと同期する方法

    最近では、適切な製品を使用する必要がある場合があります。オープンソース愛好家はクラウドベースのストレージ施設を望んでいますが、Google、Amazon、Dropbox、Microsoftなどの企業がクラウドストレージ市場を追い詰めているという事実は変わりません。彼らは信頼できる製品を無料で提供します、そしてこれはそうです、彼らは法的な要求に応じるために、または広告を提供するためにあなたのファイルをスキャンまたは読み取ることを意味します。それは人生の事実ですが、これはあなたがそれらを使うべきではないという意味ではありません。 OneDriveは、Microsoftのクラウドベースのストレージ

  2. CinebenchでCPUをベンチマークする方法

    5800Xや5900XなどのRyzen7ファミリーの1つなど、強力な新しいCPUを購入したばかりの場合は、幸運です。新しいCPUを実際にそのペースに乗せるための最良の方法は、ベンチマークを行うことです。使用できるツールはさまざまですが、Cinebenchはほとんどの愛好家にとって頼りになるツールです。 比較的高速な10分間のテストで、Cinebenchは、すべてのCPUコアを最大限に活用する独自の画像レンダリングプロセスを使用して、PC内部のパワーの完璧な画像を提供します。そのテストにより、より合成的である傾向がある他のほとんどのベンチマークよりもはるかに正確な「実際の」ベンチマーク読み取り