性能工程高手课
庄振运
Facebook 性能优化和容量管理高级专家
24631 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
性能工程高手课
15
15
1.0x
00:00/00:00
登录|注册

15 | CPU篇:如何让CPU的运行不受阻碍?

非核心处理器(Uncore)
L1/L2/L3缓存
远程内存
本地内存
Perf
vmstat
mpstat和pidstat
uptime
Top
中断和上下文切换
MIPS
CPI和IPC
CPU的负载情况和使用率
超线程(Hyperthreading,HT)
多核结构和多级缓存
多处理器和NUMA
与CPU紧密交互的其他部件的性能
运算架构
Turbo模式
时钟主频
核数
处理器数量
CPU的性能监测工具
CPU性能指标和常见性能问题
CPU的内部结构
CPU的性能决定因素
如何让CPU的运行不受阻碍?

该思维导图由 AI 生成,仅供参考

你好,我是庄振运。
从这一讲开始,我们探讨分析几个最容易发生性能问题的领域:CPU、内存、存储和网络。
这一讲先来讨论关于 CPU 的常见性能问题。首先我们从硬件的角度,来看看 CPU 的性能取决于哪些因素,然后分析一下 CPU 的内部结构。接着我们探讨和 CPU 性能相关的软件系统,看看 CPU 运行时侯的调度和切换。

CPU 的性能决定因素

宏观来讲,一台服务器里面的 CPU 性能取决于好几个因素,包括有多少处理器、多少个核、时钟主频是多少、有没有 Turbo 模式、处理器内部的运算架构以及和 CPU 紧密交互的其他部件的性能。
CPU 的更新换代很频繁,基本上每两年就会更新一代。比如 Intel 的 CPU,最近 10 年已经经历了 5 代左右。每一代都有主频的变化,而且有好几个变种。
下面的表格描述了从十年前(也就是 2009 年)的 SandyBridge,到后来的 IvyBridge、Haswell、Broadwell,直到 Skylake。注意,对后面的三代,我分别列出了其中的两种变化——单处理器(1P)和双处理器(2P)。
大体上我们可以看出,虽然 CPU 更新换代,但是处理器的时钟主频基本不再提高,甚至变得更低了。这样的目的是降低 CPU 的功耗。比如 SandyBridge 的时钟频率是 2.6GHz,但是到了 Skylake,反而降低到了 2GHz。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文从硬件和软件两个角度探讨了CPU性能问题。首先介绍了CPU性能的决定因素,包括处理器数量、核数、时钟主频、Turbo模式等。随后详细解释了CPU的内部结构,包括多处理器和NUMA架构、多核结构和多级缓存、超线程技术等。通过对CPU性能的分析,读者可以了解到如何优化CPU的运行,避免性能问题的发生。文章内容深入浅出,适合技术人员快速了解CPU性能问题及相关优化方法。 文章还介绍了CPU性能监测工具,如Top、uptime、mpstat、pidstat、vmstat和Perf等,这些工具可以帮助用户监测CPU的使用情况和性能表现。最后,文章强调了现代CPU提升性能的主要途径是并行化,包括多处理器、多核、超线程等策略,以及流水线架构和超标量等技术,都是为了提高并行处理能力。 总的来说,本文通过介绍CPU性能指标和常见性能问题,以及CPU的性能监测工具,帮助读者全面了解CPU性能优化的重要性和方法。同时,通过对CPU内部结构和工作原理的解释,读者可以深入理解CPU性能问题的根源,为解决实际工作中的CPU性能问题提供了有益的参考和指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • Linuxer
    请问老师后续有与实验结合的讲解吗?我觉得大多数人都知道概念和监测的方法,但是都不知道如何分析出具体的深层次的原因?比如NUMA里面跨节点内存访问对性能到底有多大影响呢?比如流水线停顿对性能的影响又是如何表现的等等

    作者回复: 这个专题定位是给大家一个系统和宏观的认识。具体的每个知识点的确有很多东西需要学。我会根据大家的反馈,认真考虑扩展一下。

    2019-12-30
    6
  • Ethan
    概念清楚了,需要实战才好

    作者回复: 谢谢建议,后面的章节有的。

    2020-01-01
    4
  • Di Yu
    请问老师,用什么工具才能测出来CPU几个核负载不均衡呢?

    作者回复: Linux下的话看各个CPU的负载,比如mpstat -P ALL

    2019-12-30
    3
    4
  • 站在程序员的角度,如何让CPU的运行不受阻碍哪?

    作者回复: 这个问题价值百万美元,哈哈。 程序员很多方面都可以帮助CPU的高效,比如尽量多线程并行化,数据结构缓存友好,程序实现少用内存等等。

    2020-03-04
    1
  • Frank
    老师。cpu 指令是存在哪儿的? 还是说程序代码,经过翻译后就会变成 cpu 指令?

    作者回复: 对的,程序会编译链接,然后可执行程序被载入内存。

    2020-04-01
  • 睡在床板下
    老师问一个问题,有一个c++四个线程程序都执行while死循环,任务管理器查看时cpu显示25%,说明是4核处理器某一个核100%了吗? 一个进程默认是不能跨处理器吗?

    作者回复: CPU调度是在线程级的。While循环应该会让那个CPU 100%。你的CPU或许有16个硬件线程(每个核可以有多个硬件线程)。

    2020-02-21
  • Wang
    CPU利用率在72%,负载却到了8以上,四核CPU,请问这种情况正常吗?是不是需要深入研究CPU空闲原因? 非常感谢!

    作者回复: 你说的“负载到8”是指Runnable=8吧。四核如果HT Enable的话,会有8个CPU,所以不算过载。72%我觉得也不奇怪。

    2020-01-05
  • 惜心(伟祺)
    西瓜哥的《大话计算机》里面对硬件介绍比较清晰
    2020-12-22
    1
  • A君
    衡量处理器性能🉐指标是每秒指令数,这和gpu的每秒浮点运算数类似。MIPS=ipc*clk。计算时间长,可能是多处理器、多核负债不均衡导致的,这可能跟线程调度有关,单核的性能只能是提高代码质量。
    2021-03-19
  • 大俊stan
    把这篇文章看下来,只能佩服老师的总结能力。老师这篇文章中的很多概念大家可以结合LInux性能优化实战以及深入操作系统组成原理一起学习。很多小的概念点另外两门课程都有讲到。感兴趣的同学可以看看去。
    2020-11-01
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部