Linuxカーネルに特定のCPUを使用しないように指示する


8

マルチコアマシンでいくつかのベンチマークを実行しようとしています。明示的にそれらを使用するように指示されない限り、特定のコアを単に回避するようにLinuxカーネルに伝えたいです。

アイデアは、ベンチマーク用に少数のコア(マシンには6つの物理コアがある)を確保し、CPUマスクを使用して、指定されたコアにベンチマークプロセスのみを許可できるというものです。

これは実現可能ですか?


実行したい実際のベンチマークは何ですか?
Basile Starynkevitch、2015年

回答:


5

isolcpusパラメータを使用して、一部のCPUコアをカーネルスケジューリングから分離できます。このパラメーターをgrub.confに追加し、再起動して有効にします。


2
リンクが切れています。答えに直接例を含めるのが最善の場合があります。
pchaigno

4

あなたは、いくつかの希望プロセッサアフィニティ(またはCPUアフィニティを)。

関連するsyscallはsched_setaffinity(2)ですが、ベンチマークをコーディングする場合は、pthread_set_affinity_np(3)から使用する必要があります。

関連するコマンドはtaskset(1)であり、ベンチマークするコマンド(またはシェル)で使用できます。

可能であれば、ベンチマークに関係のない他のタスクによってマシンに多くの負荷がかからないように注意してください。

あるいは、いくつかの使用ハイパーバイザーのようなのXenを、そのハイパーバイザーのためのゲストOSとしてのLinuxをブートします。次にxen、CPUコアの制限されたセットのみを使用するように構成します(正確な詳細はわかりません。調べる必要があります)。Debianの(および関連)ディストリビューションでは、次のようなパッケージのインストール可能性があるxen-linux-system-amd64xen-hypervisor-amd64xen-utilsなど(私はDebianの/シドに使用していますxen-hypervisor-4.5-amd64xen-linux-system-4.0.0-1-amd64xen-utils-4.5 など...)。

使用可能なコアの数を制限するために、Linuxカーネルを(カーネルのコンパイル時に、または特定の引数をカーネルのGrubローダーに渡して)構成する方法が存在する可能性があります。

、デスクトップLinuxのPC-にいくつかのプログラム-egをベンチマーク(使用を多くの外部の実行中のプロセスを避けるために世話をするときもちろん、それは、良いですps auxwpstree -ptopこれらを見つけるために)。少なくとも、ほとんどの対話型アプリケーション(Firefox、電子メール、エディターなどのブラウザー、EclipseなどのIDE)を閉じて終了し、少数の端末のみをベンチマークに維持します。ログインしていなくても、バッチモードでベンチマーク(ベンチマークを使用batchまたはat実行)することもできます(GnomeKDEXfceなどのGUIセッションを実行しないでください)。


タスクのアフィニティをベンチマークに設定するだけでは十分ではありません。また、他のタスクを遠ざける必要があります。あなたのハイパーバイザーの提案はそうしますが、非常に強引な方法で。
Gilles「SO-邪悪なことをやめよ」

@ギレス:ベンチマークの目的で他のタスクを遠ざける必要があるのはなぜですか?実際には、ベンチマークを行うとき、PCはアイドル状態になることがよくあります...高価なサーバーの場合、状況は異なります。
Basile Starynkevitch、2015年

たとえば、Firefox、Eclipse、およびその他の非常に要求の厳しいタスクにもリソースを費やしているデスクトップPCでベンチマークを行っているためです。
Gilles 'SO-邪悪なことをやめなさい'

自分のデスクトップPCでは、ベンチマーク中にほとんどの作業(FirefoxとEclipseの終了と終了など)を簡単に停止できます。ログインしていないときに(atまたはを使用してbatch)バッチモードでベンチマークを実行することもできます(そのため、消費セッションを実行しないでください)。
バジルスタリンケビッチ2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.