私は現在、AMDOpteronベースのNUMAシステムを使用しています。現在のプロジェクトのニーズに合わせて、LinuxとすべてのシステムプロセスでCPU0のみ(できれば、そのコアの1つのみ)を使用し、他のすべてのコアは自分のエゴイスティックなニーズに対応させたいと考えています。 本当にシステムパフォーマンスに影響を与えることはわかっていますが、今は問題ありません。
ですから、カーネルのソースコードをいじることなく実現できるかどうか知りたいです。 LinuxでのNUMAおよびSMPの実装の詳細に関する最新の記事へのリンクもありがたいです。
他のすべてのコアを残して...
これは、実際に他のコアを使用したいことを意味します。
他のコアの使用を開始する前に、タスクセットを使用して、実行中のすべてのユーザープロセス(initを含む)にアフィニティを適用します。例えば.
taskset 0x00000001 1
次に、アフィニティマスクを、「経済的ニーズ」を開始するプロセスの他のすべてに設定します。
taskset 0xFFFFFFFE $$
システムが単一のCPUにのみアクセスできるようにするブートオプションを設定しない限り、カーネルを1つのCPUのみで実行するように強制することはできません(とにかくばかげています)。
2つの可能なカーネルパラメータがあります:
maxcpus
isolcpus
あなたの場合、maxcpusがより良い選択だと思います
追加
maxcpus=1
カーネルブートオプションへ