カーネル起動パラメータnohz_fullとisolcpus = nohzの違いは何ですか?

カーネル起動パラメータnohz_fullとisolcpus = nohzの違いは何ですか?

ジッタに敏感なプロセスのCPUコアを分離するときは、ブートパラメータnohz_fullとcpusetがよく使用されますisolcpus(後者はcpusetを好むため、使用されなくなりましたがまだ存在することがわかります)。パラメータisolcpusがもう1つありますnohz。同じ効果があるかどうか疑問に思いますnohz_full

ベストアンサー1

早い、nohz_fullカーネルパラメータは(*)のみを意味します。

可能な限り、ティックを停止するCPUの指定されたリストを設定します。

いつ異機種CPU目的は次のとおりです(*):

フラグリストで指定された干渉を分離するために、1 つ以上の CPU を指定します。

暴動表示される領域はタイマースケールよりはるかに広い。
実際、ジョブキューはすべてのCPUで共有され、ロードバランシングのために、スケジューラアルゴリズムはそのCPUの両方で実行する必要があります。これには、nohz_full が isolcpus を防止できない干渉も含まれます。

今回のパッチ(2015年から)さらに次のように認めます。

nohz_full は isolcpus が設定されている場合にのみ便利です。それ以外の場合は、スケジューラを定期的に実行して、ジョブが他のコアから盗まれたかどうかを確認する必要があります。

そしてそうでした:

コマンドラインでnohz_full = xxxで始まるときは、isolcpus = xxxも設定したように動作し、nohz_full CPUを含むようにisolcpus設定を設定(または拡張)する必要があります。

したがって、...指定されたCPUグループが同じであれば、これら2つのパラメータを指定する必要がなくなると考えることができます。


(*)引用Linuxカーネルユーザーおよび管理者ガイド

おすすめ記事