特定のプロセスではなく、Linuxカーネル(ロードされたすべてのモジュールを含む)のCPUアフィニティを設定する方法に関する情報を見つけるのに苦労しています。
これは、カーネルを常に CPU 0 で実行して I/O を処理し、L1 および L2 キャッシュを汚染する可能性があるため、他の 3 つの CPU で実行するように切り替えないためです。
前もって感謝します。
ヌリク
プロセスに代わってカーネルが行う作業は、常にリクエストを行う CPU で行われます。ただし、割り込みを操作することはできます。を見て/proc/interrupts
、移動したい割り込みを特定し (たとえば、すべてが に一致するeth0
)、16 進数のマスクを にエコーしてアフィニティを設定し/proc/irq/XXX/smp_affinity
ます。
カーネル コマンドライン オプションを使用して、他のコアを無効にできるはずです。
カーネルがコアで実行されていないということは、そのコアで他に何も実行できないことを意味します。カーネル スケジューラも TLB セットアップもありません -> コードは実行されません。