たとえば、サーバーに初めて接続するときに isolcpus が有効になっているか、どの CPU にあるかを検出する方法などがあります。状況:
移行する場所を確認するためのプロセスは作成されません。
ユースケースは、6コアi7で起動するとisolcpusが有効になっていないようです。カーネル内でも可能なものでも、isolcpus=1-7
isolcpusのアクティブ化の明確な状態に関連するCPUを提供できるかどうか疑問に思います。ユーザー空間で読むことができます。あるいは、isolcpusが最初に焦点を当てるスケジューラのアクティビティ設定を読んでください。/proc/
/sys
稼働時間が高すぎるdmesg
ため、起動時にエラーを検出するために起動ログが表示されなくなることを検討してください。基本的な答えは「カーネルコマンドラインの表示「受け取れません:)
ベストアンサー1
あなたが探しているものはこのダミーファイルにあります:
/sys/devices/system/cpu/isolated
そしてその逆
/sys/devices/system/cpu/present // Thanks to John Zwinck
私たちが見ることができるdrivers/base/cpu.c
ディスプレイソースはカーネル変数ですcpu_isolated_map
。
static ssize_t print_cpus_isolated(struct device *dev,
n = scnprintf(buf, len, "%*pbl\n", cpumask_pr_args(cpu_isolated_map));
...
static DEVICE_ATTR(isolated, 0444, print_cpus_isolated, NULL);
これがcpu_isolated_map
すぐに起動時に設定されますkernel/sched/core.c
。
/* Setup the mask of cpus configured for isolated domains */
static int __init isolated_cpu_setup(char *str)
{
int ret;
alloc_bootmem_cpumask_var(&cpu_isolated_map);
ret = cpulist_parse(str, cpu_isolated_map);
if (ret) {
pr_err("sched: Error, all isolcpus= values must be between 0 and %d\n", nr_cpu_ids);
return 0;
}
return 1;
}
しかし、観察したように、誰かがデーモンによって生成されたプロセスを含むプロセスの類似性を修正した可能性がありますcron
。systemd
これが発生すると、代わりに変更されたアフィニティマスクを継承する新しいプロセスが作成されますisolcpus
。
したがって、上記の内容はisolcpus
あなたの要求に応じて提供されますが、まだ役に立ちません。
isolcpus
この緩やかな動作が発生しましたが、まだ「実行」されていないことを発見したとしましょう。できるのみバインドできることを認識し、シングルCPU=0
プロセッサモードにあると誤って信じ、好みマスクをリセットして「エラー修正」を試みるいくつかのプロセスによってフォークされます。この場合、CPUS 1-6の代わりに0-5を分離して動作していることを確認できます。