NUMA WindowsAPI

#NUMA

关联性

默认情况下,Windows给线程分配CPU时,使用软关联。意思是其他因素都一样下,系统使线程在上一次运行的处理器上执行;让线程始终在同个处理器上运行有助于重用处理器高速缓存的数据。

NUMA(Non-Uniform Memory Access:非统一内存访问)是一种计算机体系结构,该结构的计算机由多个板(board)组成,每个板又有多个CPU和内存块。任何线程都可以在这些CPU上执行;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A4Dk5k2h-1680491323292)(assets/image-20230401214022-x6hluau.png)]

当C P U访问的内存是它自己的插件板上的内存时, N U M A系统运行的性能最好。

Windows查看PC有多少个board: CMD->运行msinfo32,看右侧是几个处理器,1个就是单node,2个就是双node。

绑定内核:

  1. 进程亲缘性:限制进程在可用CPU的子集上运行的单个进程中的线程数量

  2.  BOOL SetProcessAffinityMask(HANDLE hProcess, DWORD_PTR dwProcessAffinityMark);
    

第一个参数h P r o c e s s用于指明要影响的是哪个进程。第二个是位屏蔽码,用于指明线程可以在哪些 C P U上运行。例如,传递0 x 0 0 0 0 0 0 0 5表示该进程中的线程可以在CPU 0和CPU 2上运行,但是不能在CPU 1和C P U 3至3 1上运行。

//返回屏蔽码
BOOL GetProcessAffinityMask 
  1. 线程亲缘性:

    BOOL SetTreadAffinityMask(HANDLE hThread, DWORD_PTR dwProcessAffinityMark);
    

    如不想不强制设置,可以设为首选CPU,运行线程可能移到其他CPU上运行

    DWORD SetThreadIdealProcessor(HANDLE HThread, DWORD dwIdealprocessor);
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值