ターミネーターのゲームサーバーに関連するスクリプトの束を実行しようとしています。唯一の問題は、これを行うと、ターミネーターがすべてのCPUコアとPCの遅延を検出することです。起動する方法はありますが、CPUコアが1つしかないと思わせる方法はありますか?
ターミネーターのゲームサーバーに関連するスクリプトの束を実行しようとしています。唯一の問題は、これを行うと、ターミネーターがすべてのCPUコアとPCの遅延を検出することです。起動する方法はありますが、CPUコアが1つしかないと思わせる方法はありますか?
回答:
terminator
特定のプロセスのすべてのCPUで「拡散」を行っているわけではありません。Linux自体(カーネル)がこれを行っています。タスク(プロセス)は、デフォルトですべてのCPUで実行できるようにスケジュールされています。スレッドを使用する場合、一度に複数のCPUを使用できます。
プロセスを特定のCPUに制限するには、コマンドを使用しますtaskset
。
taskset --cpu-list 1,2 my_command
このコマンドは、my_commandを強制的にCPU#1または#2でのみ実行します。
詳細man taskset
については、「Linux CPU Affinity」と入力または検索してください(最初のヒットはこちら)。
kernel.sched_autogroup_enabled = 0
する/etc/sysctl.conf
必要があります。ただし、自動グループが無効になっていると、起動中に13.10でカーネルパニックが頻繁に発生することもわかりました。
別の答えはすでに文字通りの答えを与えていますが、これが正しい方法で行われていない可能性を探ります。代わりに、nice
コマンドを使用してコンピューターの速度を低下させたくないスクリプト(非対話型スクリプトなど)を実行する必要があります。
これを行うには、たとえば、実行したいコマンドの前にniceを付けるだけです。
nice command_to_run
これにより、プログラムの優先度が他のタスクより下になり、マシンの速度が低下することはありません。私はよくPCをクロールに遅くする長いコンパイルを行うときにこのテクニックを使用します。これは、マシンがビジーでないときにプログラムがすべてのコアを使用できるようにするという利点がありますが、何かを実行するとすぐにそれらを使用して停止しますそれ以外。
taskset nice open terminator
両方を使用するように書くだけで、これをタスクセットで使用することも可能です。ただし、2つの異なるプログラムを使用して両方ともプログラムのリソース使用量を削減する効果を達成するため、これはやり過ぎです。