プロセッサ親和性
そこで多くの実装では、タスク B を二つ目のプロセッサに移動させ、プロセッサの使用率を最大に引き上げようとする。タスク A は元のプロセッサとの親和性を持ち続けるが、 B は二つ目のプロセッサとの親和性を持つようになる。
プロセッサ親和性を用いると、キャッシュの問題をうまく軽減させることができるが、 ロードバランスの問題を抑制することはできない 。
プロセッサ親和性は、非対称的なアーキテクチャではより複雑なものとなる。例として、 ハイパースレッディング・テクノロジーに対応したデュアルコアプロセッサを2つ搭載したシステムの場合、 CPU のスケジューリングは非常に難しくなる。同一コア上に実装されたハイパースレッディングによる二つの仮想 CPU 間には完全な親和性があり、同じチップ上の二つのコア(コア同士がキャッシュなどの何らかの資源を共有している)同士には若干の親和性、物理的なチップが異なる場合には親和性はない。
キャッシュ以外のリソースも共有されるため、プロセスを特定の CPU に割り当てる基本的な方法として、プロセッサ親和性だけを用いることはできない。たとえばあるプロセスがハイパースレッディングによる仮想的 CPU で動作し、現在はその仮想 CPU がビジーでもう一方がアイドルであるような場合、キャッシュの親和性を考慮すればプロセスはアイドルのプロセッサに割り当てられるべきである。