编程高手必学的内存知识
海纳
华为编译器高级专家,原 Huawei JDK 团队负责人
20674 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
编程高手必学的内存知识
15
15
1.0x
00:00/00:00
登录|注册

17 | NUMA:非均匀访存带来了哪些提升与挑战?

你好,我是海纳。
在硬件篇的最后一节课,我们来看两个比较重要的物理内存问题。在第 1 节课,我们讲到物理内存就是指主存,这句话是不太精确的,其实大型服务器的物理内存是由很多部分组成的,主要包含外设所使用的内存和主存
这节课,我们先会对计算机是如何组织外设所使用的内存进行分析,因为这是你了解设备驱动开发的基础;接下来,我们将分析主存,不过在展开之前,你还是需要了解一下它的内部结构,才能更好的理解。
如果你从 CPU 的角度去看,就会发现物理内存并不是平坦的,而是坑坑洼洼的。正是因为这样的特点,也就导致 CPU 对物理内存的访问速度也不一样。同时,有些内存可以使用 CPU Cache,有些则不可以。我们把这种组织方式称为异质(Heterogeneity)式的结构。
再往深入拆解,在异质式结构中,CPU 不仅仅对外设内存和主存的访问速度不一样,它访问主存不同区间的速度也不一样。换句话说,不同的 CPU 访问不同地址主存的速度各不相同,我们把采用这种设计的内存叫做非一致性访存(Non-uniform memory access,NUMA)。
通常,在进行应用程序内存管理时,正确使用 NUMA 可以极大地提升应用程序的吞吐量;相应地,如果 NUMA 的配置不合理,也有可能带来比较大的负面影响。而且,在多核体系结构的服务器上,合理地通过控制 NUMA 的绑定,来提升应用程序的性能,对于服务端程序员至关重要。为了帮助你合理运用 NUMA,今天这节课,我们就来详细分析 NUMA 会为应用程序带来哪些提升与挑战。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

NUMA架构在多核服务器中的重要性日益凸显,本文详细介绍了NUMA架构的背景、原理以及合理配置NUMA来提升应用程序性能的方法。通过将内存分为多个节点,NUMA架构使得CPU可以优先访问离自己近的内存节点,从而提高访问效率。相比之下,UMA架构由于基于总线连接,随着处理器核数增多,面临带宽压力增大的问题,因此NUMA架构逐渐成为主流选择。文章还介绍了numactl工具的使用方法,以及正确绑定CPU和内存节点来提升应用程序性能的重要性。此外,文章还强调了NUMA内存策略对应用程序性能的影响,以及正确配置的重要性。通过本文的阅读,读者可以深入了解NUMA架构及其对应用程序性能的影响,以及如何通过合理配置来优化应用程序性能。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编程高手必学的内存知识》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • LDxy
    NUMA架构是用于多个CPU的架构而不是多核单CPU的架构吧?Linux的终端模式是不是就是字符模式,而桌面模式就是图形模式?

    作者回复: 对,对。SMP架构是指多CPU架构,而不是多核。我的专栏里可能没太注意区分多CPU和多核,有的地方可能存在不太准确的情况。第二个问题,答案是,对的,你这么理解是对的。

    2021-12-07
    3
  • 送过快递的码农
    老师,nginx采用多进程的模型通过绑定核心的方式,是不是也是巧妙运用NUMA架构?

    作者回复: 在多处理器架构上,类似nginx这种框架基本都考虑了numa的影响。它们大多会采用libnuma所提供的API来自主控制NUMA策略。

    2021-12-09
    2
  • 送过快递的码农
    是不是有段内存是留给bios的?老师我在mac上面通过gcc把一个简单的c变异最终得到a.out 和老师专栏里面多次提到的a.out是一回事儿么?表示类unix下的课执行文件么?

    作者回复: 好问题呀。答案是:不是一回事。gcc默认的编译输出文件名是a.out,这是从上古时代遗留来的。我在文章里提到的a.out,是指早期的一种文件格式。

    2021-12-09
  • 李圣悦
    最近dpdk上做开发,还一直在想这个问题,数据包从一个网卡收包处理完转发到另外一个网卡,网卡1绑定到node0,网卡2绑定到node1;从网卡1到网卡2,业务内存在node0上分配;从网卡2到网卡2,业务内存应该在node1上分配;但业务内存没法拆成两个方向,请教老师,这个该怎么处理比较好?
    2022-04-19
  • 张Dave
    swap替换,哪一章节有详细介绍啊?
    2022-02-10
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部