1.UMA架构:早期的计算机cpu访问内存先经过前端总线FSB到北桥芯片(内存控制器集成在北桥芯片里面)然后内存控制器连接到内存,只能通过增加cpu,前端总线和内存的工作频率去提高工作效率
2.numa架构:后续通过增加cpu的数量(多核,多cpu)去提升性能,内存控制器集成到cpu的内部,一般一个cpu socket 会有一个内存控制器,每个cpu都会连接到部分内存,这部分内存称为本地内存,cpu之间通过OPI总线访问不和自己直连的远地内存,numa架构会优先访问本地的内存
3.qume把numa模拟出来,例如这里两个插槽数,也就是2个cpu,一个cpu八核,qume虽然模拟了numa,但是调度是随机的,除了分配不均匀造成物理架构的远地内存访问过多外,还会导致频繁的切换,性能发挥不稳定
4.超融合的numa调度,把qume模拟出来的虚拟节点,绑定在某物理cpu上,对应的内存同样绑定在该cpu上,如果vcpu比物理cpu核数少就会绑定在一颗物理cpu上,如果多就会平分开来,如果cpu超配不足了就会进行迁移到另外一颗cpu上,并且内存也要跟着迁移,但是之前的本地访问还是保持着,还是一个原则尽量优先访问本地内存再访问异地内存
5.numatcl --hardware 查看硬件对numa的支持信息,cpu被分成node0和node1两组,这台机器有两个cpu socket,一组node被分配到13GB内存,这台机器总共26GB,node distances是一个二维矩阵node(i)(j)表示nodei访问nodej的内存相对距离,node0访问node0的距离是10node1访问node1的距离是21