で定義されたソースコードを読みました/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が何であるかわからず、大規模なマルチプロセッサアーキテクチャに精通していない場合は、この記事に興味がない可能性があります。