Linuxでプロセスの動的インターリーブとは何ですか?

Linuxでプロセスの動的インターリーブとは何ですか?

で定義されたソースコードを読みました/source/mm/mempolicy.c。 1178行目から始まります。

/* Do dynamic interleaving for a process */
static unsigned interleave_nodes(struct mempolicy *policy)
{
        unsigned nid, next;
        struct task_struct *me = current;

        nid = me->il_next;
        next = next_node(nid, policy->v.nodes);
        if (next >= MAX_NUMNODES)
                next = first_node(policy->v.nodes);
        me->il_next = next;
        return nid;
}

私はインターリーブに慣れていません。 Linuxのインターリーブとは何ですか?

ベストアンサー1

ファイルの先頭のコメントを読んでください。

 * interleave     Allocate memory interleaved over a set of nodes,
 *                with normal fallback if it fails.
 *                For VMA based allocations this interleaves based on the
 *                offset into the backing object or offset into the mapping
 *                for anonymous memory. For process policy an process counter
 *                is used.

これはメモリ割り当て戦略ですシステム、つまり各ノード(プロセッサ)からやや離れている可能性がある複数のメモリバンクを持つ大規模マルチプロセッサコンピュータ。デフォルトポリシーは、現在メモリを要求しているプロセスを実行しているノードに近いメモリを好みます。これすれちがいポリシーは一連のメモリバンクを循環して負荷を分散します。メモリ要求は通常、別のメモリバンクに送信されるため、メモリ要求を並列に実行できるという考えである。

NUMAが何であるかわからず、大規模なマルチプロセッサアーキテクチャに精通していない場合は、この記事に興味がない可能性があります。

おすすめ記事