1つのCPUコアのみでプログラムを実行する方法は?


28

ターミネーターのゲームサーバーに関連するスクリプトの束を実行しようとしています。唯一の問題は、これを行うと、ターミネーターがすべてのCPUコアとPCの遅延を検出することです。起動する方法はありますが、CPUコアが1つしかないと思わせる方法はありますか?


2
こんにちは、あなたはここでxyの問題に苦しんでいるように思えますが、あなたが達成しようとするものではなく、あなたが試みた解決策を振り返る価値がある場合があります1つのコアで何かを実行するだけでなく、PC。それでもなお、これは非常に良い質問です。+1
バリティ

回答:


44

terminator特定のプロセスのすべてのCPUで「拡散」を行っているわけではありません。Linux自体(カーネル)がこれを行っています。タスク(プロセス)は、デフォルトですべてのCPUで実行できるようにスケジュールされています。スレッドを使用する場合、一度に複数のCPUを使用できます。

プロセスを特定のCPUに制限するには、コマンドを使用しますtaskset

taskset --cpu-list 1,2 my_command 

このコマンドは、my_commandを強制的にCPU#1または#2でのみ実行します。

詳細man tasksetについては、「Linux CPU Affinity」と入力または検索してください(最初のヒットはこちら)。


2
ちなみに、「悪い」プロセスだけを放棄して、スケジューリングの優先順位を下げることもできます。
マッテオイタリア14年

@MatteoItalia Ubuntu 13.10および14.04はデフォルトでniceレベルを無視することがわかりました。それを機能させるために追加kernel.sched_autogroup_enabled = 0する/etc/sysctl.conf必要があります。ただし、自動グループが無効になっていると、起動中に13.10でカーネルパニックが頻繁に発生することもわかりました。
カスペルド

親プロセスの子プロセスはどうですか?親プロセスのコア/ CPUアフィニティを継承しますか?
yildizabdullah

5

別の答えはすでに文字通りの答えを与えていますが、これが正しい方法で行われていない可能性を探ります。代わりに、niceコマンドを使用してコンピューターの速度を低下させたくないスクリプト(非対話型スクリプトなど)を実行する必要があります。

これを行うには、たとえば、実行したいコマンドの前にniceを付けるだけです。 nice command_to_run これにより、プログラムの優先度が他のタスクより下になり、マシンの速度が低下することはありません。私はよくPCをクロールに遅くする長いコンパイルを行うときにこのテクニックを使用します。これは、マシンがビジーでないときにプログラムがすべてのコアを使用できるようにするという利点がありますが、何かを実行するとすぐにそれらを使用して停止しますそれ以外。


「nice open terminator」のようなコマンドを使用すると、ターミネーターはすべてのCPUコアで実行されますか?
user245115 14年

ああ、ところで、マウスを動かしても何も開いていない場合、すべてのCPUが使用されますか?そして、すべてのCPUを使用するためにマウスの移動を停止してからどのくらい時間がかかりますか?タスクセットでこれを使用できますか?(ええ、私はLinuxの本当の
初心者

@ user245115 niceユーティリティを使用すると、ターミネーターが複数のCPUコアを使用する可能性がありますが、別のプログラム(niceで実行されていない)がそれらを使用したい場合、それらのコアの使用をすぐに停止するため、スローダウンは発生しませんが、そうでなければ、それらが完全に無料で未使用の場合に使用します。これは、マウスの使用やプログラムとのその他の相互作用の影響を受けません。
バリティ14年

@ user245115 taskset nice open terminator両方を使用するように書くだけで、これをタスクセットで使用することも可能です。ただし、2つの異なるプログラムを使用して両方ともプログラムのリソース使用量を削減する効果を達成するため、これはやり過ぎです。
バリティ14年

@ user245115他のアクション(マウスの移動など)を行うとターミネーターのCPU時間は短くなります。これは事実上瞬時であり、他のアクティビティを停止するとすぐに再び使用されます(事実上瞬時)
Vality
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.