Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C NUMA系统上的多程序共享变量_C_Linux_Linux Kernel_Pthreads_Numa - Fatal编程技术网

C NUMA系统上的多程序共享变量

C NUMA系统上的多程序共享变量,c,linux,linux-kernel,pthreads,numa,C,Linux,Linux Kernel,Pthreads,Numa,我正在用NUMA系统做一些实验,其中我有一个多线程/2线程的c程序,在它们之间共享一个缓存线(int64)变量。当我在同一个节点上运行两个线程时,与在两个不同的NUMA节点上运行/绑定这些线程相比,程序完成所需的时间要多出近50%。我想应该是相反的,因为它们共享数据,如果在同一个节点上运行,它们应该完成得更快 我是不是遗漏了什么 pthread_mutex_lock (&shared_mutex); if (thinfo->thread_num == 1) shar

我正在用NUMA系统做一些实验,其中我有一个多线程/2线程的c程序,在它们之间共享一个缓存线(int64)变量。当我在同一个节点上运行两个线程时,与在两个不同的NUMA节点上运行/绑定这些线程相比,程序完成所需的时间要多出近50%。我想应该是相反的,因为它们共享数据,如果在同一个节点上运行,它们应该完成得更快

我是不是遗漏了什么

  pthread_mutex_lock (&shared_mutex);
  if (thinfo->thread_num == 1)
    shared_var++;
  else
    shared_var--;
  pthread_mutex_unlock (&shared_mutex);

更新问题中的代码。避免在注释部分中使用,每个NUMA节点有多少个内核?如果只有一个内核,那么CPU资源的争用将很容易解释为什么两个线程的速度会变慢,即使内存资源的争用更少。在这种情况下,让两个线程位于不同的节点上会使程序的CPU带宽增加一倍,即使单个缓存线会大量反弹……我的系统有2个NUMA节点,每个节点有6个内核。