首页 > 其他分享 >伪共享(False Sharing)

伪共享(False Sharing)

时间:2023-01-04 19:55:58浏览次数:48  
标签:缓存 False 修改 主存 CPU cacheline Sharing 共享 cpu

【参考】

https://zhuanlan.zhihu.com/p/55917869

【cache memory】

cpu和主存间存在三级缓存

L1, L2(单核独享)

L3(多核共享)

【L1和L2如何保持一致】

mesi协议定义cacheline四个状态

modified,只缓存在该cpu的缓存中,且被修改

exclusive,只缓存在该cpu的缓存中,未被修改

shared,被多个cpu缓存,并且各个缓存中的数据与主存数据一致,当有一个CPU修改该缓存行中,其它CPU中该缓存行可以被作废

invalid,该缓存是无效的(可能有其它CPU修改了该缓存行)

【false share问题】

 

1)core0抢到cacheline的主导权,thread0更新cacheline(导致core1中cache line 变为invalid)

2)thread1去更新时通知core0将cacheline刷回主存,然后再从主存中load该cacheline进入高速缓存进行修改(该修改又会使得core0的cacheline失效)

 【性能测试】

https://www.noerror.net/zh/cpp/thread/hardware_destructive_interference_size.html

只用了1/4的时间

【folly实现】

隔离几个变量

标签:缓存,False,修改,主存,CPU,cacheline,Sharing,共享,cpu
From: https://www.cnblogs.com/jiangshifu/p/17025848.html

相关文章

  • windons下查看并关闭共享
    win+R输入cmd输入netshare显示出关闭想关闭的共享,例如:netshareC$deletenetshareD$deletenetshareE$deleteC$为需要的关闭的共享盘符,自行替换红框部分即可关闭想......
  • nginx+tomcat+redis完成session共享
    nginx安装redis安装准备两个tomcat,修改相应的端口 名称IP端口tomcat版本JDKtomcat110.10.49.2380807.0.401.7.0_25tomcat210.10.49.1580817.0.401.7.0_25 修改nginx.conf......
  • 进程间的数据不共享
    进程间是不会共享全局变量的;当创建一个子进程时,会先将主进程的资源进行拷贝,也就是说子进程是主进程的一个副本。importmultiprocessing#创建空列表my_data=[]#向......
  • 基于linux下的samba文件共享系统
    SMB文件共享:服务端口:通常使用TCP/445进行所有连接。还使用UDP137,UDP138和TCP/139进行向后兼容。主配置文件:/etc/samba/smb.conf配置环境:准备两台虚拟机,进行配置IP,y......
  • 基于Linux下的yum源的搭建与共享
    yum命令:###yum命令仅仅是对软件进行管理,rpm命令才是真正安装软件的,yum的好处是可以解决软件依赖性。yum源的搭建:mkdir/iso    建立个目录mv/home/kiosk/Desktop/*.is......
  • 利用Barrier使局域网下的Linux(Majaro)和Window10共享同一套键盘鼠标
    项目场景:现有两台电脑:一台笔记本(Win10)连接无线网(DHCP)一台工作站(Linux-Manjaro)连接无线网(DHCP)为了简化桌面、便于操作,打算让笔记本和工作站共用一套键盘鼠标。问题分......
  • 如何在多个应用程序中共享日志配置
    有的时候你有多个应用程序,它们需要使用相同的日志配置。在这种情况下,你可以将日志配置放在一个共享的位置,然后通过项目文件快速引用。方便快捷,不用重复配置。Directory.Bu......
  • Linux网络第五章:yum仓库的灵活部署及NFS共享服务
    目录一、yum仓库的灵活部署1、yum基础知识及命令2、本地yum仓库搭建3、通过httpd服务建立yum仓库4、建立国内yum源二、NFS共享服务1、NFS基础知识2、搭建NFS服务......
  • C++/python共享内存交换图片/文本信息
    共享内存保存读取图片OpenShare.cpp#include"OpenShare.h"//共享内存1,,C++发--python传递位姿与图像存储路径intkey_id=1111;intshmid;void*pBuffer;//共......
  • 黑苹果 双系统 macos 与Windows蓝牙共享
    一直在找Ventura与Windows11的蓝牙鼠标共享的办法,之前发帖问过,感谢各位群友的热心帮助,最终成功了!不敢独享,分享出来,让有需要的童鞋也能用起来。1、先在Windows11下配对好蓝牙......