Memory 回写或直写到主存储器
直写:数据立即通过缓存写入主存 回写:在以后的时间写入数据 我有一个共享内存,它位于NUMA节点1中,假设在节点0中执行的进程a修改了共享内存的内容,然后在节点1中执行的进程B喜欢读取共享内存的内容 如果处于直写模式,则进程A修改的内容将位于节点1的主存中,因为当节点0将数据写入节点1的主存时,主存将经过节点1的L3缓存,那么进程B可以从节点1的L3缓存中获取进程A修改的内容,而不是从节点1的主存 如果是回写模式,则当节点1中的进程B喜欢读取共享内存的内容时,缓存线将位于节点0的L3缓存中, 获取它将花费更多,因为它位于节点0缓存中 我想知道在Intel(R)Xeon(R)CPU E5-2643中,它将选择哪种模式?! 或者Xeon将自行决定使用哪种模式,而程序员却无能为力 编辑: dmidecode-t缓存 showes Xeon缓存操作模式为写回,看起来合理,参考 英特尔(和AMD)x86-64 NUMA体系结构上的缓存一致性不像RAID阵列那样工作。。。两个或四个处理器包没有单一的直写或回写缓存,而是有一个用于同步和共享其L3缓存的侦听和传输协议。尽管NUMA已经成为主流大约十年了,但操作系统级对控制这些事情的支持通常非常粗糙 具体说到Linux,对缓存设置的控制实际上可以归结为几个进程级设置:Memory 回写或直写到主存储器,memory,cpu-cache,Memory,Cpu Cache,直写:数据立即通过缓存写入主存 回写:在以后的时间写入数据 我有一个共享内存,它位于NUMA节点1中,假设在节点0中执行的进程a修改了共享内存的内容,然后在节点1中执行的进程B喜欢读取共享内存的内容 如果处于直写模式,则进程A修改的内容将位于节点1的主存中,因为当节点0将数据写入节点1的主存时,主存将经过节点1的L3缓存,那么进程B可以从节点1的L3缓存中获取进程A修改的内容,而不是从节点1的主存 如果是回写模式,则当节点1中的进程B喜欢读取共享内存的内容时,缓存线将位于节点0的L3缓存中, 获
- 允许您的代码在什么内核上运行
- 是否允许进程分配非本地节点内存
- 进程是否在Numa节点之间交错所有分配
Linux“numactl”手册页()可能是您的一个良好开端。这是由操作系统处理的。你在编一个吗?