2012-10-09 53 views
2

我是NUMA感知多線程編程的新手。我正在編寫我的代碼,以便所有線程及其內存分配都被限制在一個節點上。在節目的一開始,我提出以下電話:如何限制所有內存分配到一個NUMA節點

struct bitmask *bm = numa_parse_nodestring("0"); 
if (bm == 0) { 
    exit(1); 
} 
numa_bind(bm); 

我的理解是,一個電話這種方式將綁定所有線程和內存分配到numa_bind到節點0

而且,當

pthread_setaffinity_n 

然而,當我查看/ proc // numa_maps,我仍然可以看到,某些庫(如libc中)被綁定到:我從這個代碼開始並行線程,我用它們綁定到特定CPU節點1上的內存。我怎樣才能確保所有的內存需求紅色由進程綁定到節點0?

回答

0

像libc這樣的共享庫不能綁定到您的進程/應用程序指定的內存庫。請參閱shared-library-numa

0

代碼會傾向於緩存在本地處理器的L3緩存中。由於它是隻讀的,因此一旦將其加載到緩存中,就不太可能產生任何流量。除非你有分析信息表明它確實存在問題,否則我不會太費心。

相關問題