Linuxカーネルでは、「同じCPUグループ」とはどういう意味ですか?

Linuxカーネルでは、「同じCPUグループ」とはどういう意味ですか?

どういう意味ですか?complete on same CPU-group? 2行のコードが表示されます。

#define QUEUE_FLAG_SAME_COMP    9   /* complete on same CPU-group */
#define QUEUE_FLAG_SAME_FORCE  18   /* force complete on same CPU */

CPU-group同じCPUforce completeこれらとそしての違いは何ですかnon-force complete

ベストアンサー1

それは違いです。

#define QUEUE_FLAG_SAME_COMP    9   /* complete on same CPU-group */
#define QUEUE_FLAG_SAME_FORCE  18   /* force complete on same CPU */

これで、同じCPUグループを次のように定義できます。

  • CPU が同じクラスター (CPU グループなど) の下にある場合、完了に優先される CPU はそのクラスターの最初の CPU になり、そうでない場合はそのクラスターのオンライン CPU になります。これは5.9未満のカーネルに主に適用されます。たとえば、CPU[0-8] から CPU[0-4] の下のすべての CPU タイプが同じであれば、同じ CPU グループと呼ばれます。

  • または、すべてのCPUが同じL3キャッシュを共有します。これにより、これらは同じCPUグループの一部になります。たとえば、システムにCPU0-8があり、同じL3キャッシュがある場合は、同じCPUセットと呼ばれます。

2番目のクエリは次のようになります。QUEUE_FLAG_SAME_COMP, 同じ CPU グループに属する CPU で要求が完了します。 CPU3がCPU0から割り込み要求を受けたと仮定すると、CPU0とCPU3は同じグループにあるため、irqを完了する同じCPUはソフト割り込み/要求の完了をトリガします。

しかし、あなたはそれを選択的にするよう強制します。QUEUE_FLAG_SAME_FORCE、上半分が処理された後、下半分は要求を開始したのと同じCPUに強制されます。上記の例では、CPU 3 と仮定しています。これにより、要求はCPU3で完了します。これにより、ほとんどのブロック層およびSCSI中間層完了操作をIPIを介して送信CPU(cpu3など)に再プッシュできます。

おすすめ記事