离奇的CPU利用率

接到一个黑盒的case:一套双志强的服务器上,运行一个典型的索引服务,通过taskset命令将改服务的CPU绑定到socket1之后,理论上socket0应该没有工作负载,但实际上的结果是socket0非但有负载,而且对于一颗24core的CPU来说,CPU利用率接近100%——比socket1的负载还高!且更加头疼的是无论怎么对server端施加压力,serve的CPU利用率和性能不会有太大的提升。

继续阅读“离奇的CPU利用率”
推荐阅读:
去年的DCDC,我主要介绍了基
之前收到公司一个大牛的PPT,
既然都是9102年了,云计算早

DCDC’19-NUMA的优势和陷阱

去年的DCDC,我主要介绍了基于RDT技术对云计算场景做优化,转眼就一年过去了。2019年DCDC依旧还是Santa Clara、台北、上海、北京4处分会场。不同的是今年SC的presentation已经由我在美国的同事代领;台北今年取消了所有的云计算的专题;仅存京沪两地的演讲计划将在下周开始。照旧,这次分享下基于英文版本的内容(PS:不得不删除部分内容,整体略凌乱见谅!)。

继续阅读“DCDC’19-NUMA的优势和陷阱”
推荐阅读:
接到一个黑盒的case:一套双
之前收到公司一个大牛的PPT,
既然都是9102年了,云计算早

高性能编程的困境

之前收到公司一个大牛的PPT,里边详细分析了一个典型的代码段在短短2~3秒钟时间内的内存访问特征。内容翔实紧凑,说的有理有据。技术类PPT的惯例,文中有几页折线图表达了整个过程中每一细微时间粒度上的内存带宽变化,扫了一眼细细密密的横坐标,一方面感慨大牛的数据之精确,另一方面忽然有了放challenge的冲动。

继续阅读“高性能编程的困境”
推荐阅读:
一直没有写过关于Linux内核
尽管当前已经是多核心SMP时代
接到一个黑盒的case:一套双

从核心性能不一致到sub-numa

既然都是9102年了,云计算早就成了服务器的主要任务,就如同我之前说过的:“那种期待一个应用就把一台主机塞满的时代是回不来了!”不同于服务传统的称之为“科学计算”的模式,云计算的业务场景要求CPU的隔离性更优于性能,尽可能的各个core之间是搭积木似的即可随意打通(单虚机多CPU)又要互不干扰的。Xeon为代表的服务器CPU给出的主流解决方式是单socket,更多核心。

继续阅读“从核心性能不一致到sub-numa”
推荐阅读:
首先列出本站之前相关的几篇帖子
事出这一段时间做了不少基于SP
继续在NUMA和性能差异的路上

LLC缓存一致性保障原理

如果大家了解一点CPU的知识,应该能够了解到当前的x86架构的CPU都通过多级缓存实现内存的快速访问。目前较为流行的做法是3级缓存的设置,L1/L2为每个CPU core独享,而L3 或者LLC(last level cache)则由同一个socket上的所有物理core共享。这个时候如果考虑双路甚至多路CPU的话,由于内存中的数据有且只有一份,但多个CPU很可能在此基础上创建属于自己socket的缓存。对于内存的读访问来说,多份数据并不会影响到一致性,但一旦有一个socket上的某个core修改了数据,一致性问题则会凸显。究竟CPU是如何实现一致性保障的呢?

继续阅读“LLC缓存一致性保障原理”
推荐阅读:
接到一个黑盒的case:一套双
去年的DCDC,我主要介绍了基
之前收到公司一个大牛的PPT,

CPU的电源状态分类

有感于CPU的各种电源状态描述复杂且混乱无比。常见的诸如S0/S1/S3,C0/C3一会儿又成了P开头的P0,P1,还有一堆P01~P0n之类的让人一时半会儿摸不着头脑,这次就一次性归纳一下吧。

继续阅读“CPU的电源状态分类”
推荐阅读:
接到一个黑盒的case:一套双
去年的DCDC,我主要介绍了基
之前收到公司一个大牛的PPT,

一个物理内存分布导致的问题

事出前些日子有人咨询我:“在某个关闭NUMA的双CPU机器上,通过lat_mem_rd跑分,为什么会出现差不多2倍的跑分差距?” 话说这里的lat_mem_rd是lmbench 的一个组件,它通过模拟排序来测试系统的内存读性能——主要是时延为主。

继续阅读“一个物理内存分布导致的问题”
推荐阅读:
继续在NUMA和性能差异的路上
首先列出本站之前相关的几篇帖子
NUMA(Non-Unifor

时延的误区

时延 latency(亦称为延时、潜伏时间等),是衡量一个系统性能的重要指标。这里就简单的谈谈在时延这个概念上经常容易犯的几个误区吧。

继续阅读“时延的误区”
推荐阅读:
接到一个黑盒的case:一套双
去年的DCDC,我主要介绍了基
之前收到公司一个大牛的PPT,

从stream的多线程协同效率说起

似乎每次开头都要讲述一下计算机或者说x86架构的演进历史,这似乎成了站长Litrin的一种习惯。现在的x86架构CPU频率以及最大IPC已经接近极限,厂商倾向于将越来越多的核心通过SMP技术多线程负载。不妨做一个思想实验:将计算机的任务想象为搬砖,CPU核心则是搬砖的工人。根据我们的常识,工人越多则任务完成的越快,也就是意味着核心数和性能是成正比的。然而事实真的如此吗?

继续阅读“从stream的多线程协同效率说起”
推荐阅读:
继续在NUMA和性能差异的路上
任何一个合理的应用程序的运行时
5月中旬,我参加了在加利福尼亚

SEP,EMON和EDP

近一段时间一直在做些任务负载特征分析的事儿。针对服务器上运行的若干个不同的业务,分析它们对于不同细颗粒度资源的使用情况。本身这些分析的工作是可以通过vtune这类的工具直接得到的。但vtune是一个桌面版本的性能分析工具,一对一的执行、跟踪、数据分析不够“工业化”。于是,这里就讲讲VTune的底层实现SEP和EMON以及EMON结果的分析工具EDP。

继续阅读“SEP,EMON和EDP”

推荐阅读:
接到一个黑盒的case:一套双

去年的DCDC,我主要介绍了基

之前收到公司一个大牛的PPT,