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

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

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

Hyper Thread超线程的种种

说起HT技术,这早就是15年以前的技术了,当下主流的X86 CPU就没见过不支持HT技术的。简而言之,HT技术就是一个把物理CPU core虚拟成多个逻辑CPU并允许并行执行指令的功能。之所以写这篇文章主要是回答几个常见的问题:

  • 为什么有HT技术,为什么HT只有单核心双线程?
  • HT和真实的core到底有什么区别?
继续阅读“Hyper Thread超线程的种种”
推荐阅读:
长久以来,我们对计算机资源的理
如果大家了解一点CPU的知识,
RDT技术,全称为Resour

LLC缓存一致性保障原理

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

继续阅读“LLC缓存一致性保障原理”
推荐阅读:
既然都是9102年了,云计算早
有感于CPU的各种电源状态描述
事出前些日子有人咨询我:“在某

CPU的电源状态分类

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

继续阅读“CPU的电源状态分类”
推荐阅读:
既然都是9102年了,云计算早
如果大家了解一点CPU的知识,
事出前些日子有人咨询我:“在某

应用程序状态切换检测

任何一个合理的应用程序的运行时间内,微观上都会存在或多或少的“状态切换”。所谓状态切换的定义就是在用户可感知的特征变化。可感知的特征可以理解为对各种资源的需求变化的特性。
有点绕,举个简单例子:一个SQL数据库,在只有一个用户连接的时候,每次用户的访问都会出发一个状态切换事件,而当用户使用长连接(pipe line)去执行多个SQL命令时,由于SQL的不同,每个SQL之间就是一个状态切换。

继续阅读“应用程序状态切换检测”
推荐阅读:
5月中旬,我参加了在加利福尼亚
讲点关于工程师的理念和哲学吧。
似乎每次开头都要讲述一下计算机

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

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

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

时延的误区

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

继续阅读“时延的误区”
推荐阅读:
既然都是9102年了,云计算早
如果大家了解一点CPU的知识,
有感于CPU的各种电源状态描述

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

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

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

SEP,EMON和EDP

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

继续阅读“SEP,EMON和EDP”

推荐阅读:
既然都是9102年了,云计算早

如果大家了解一点CPU的知识,

有感于CPU的各种电源状态描述

DCDC2018–混合部署场景下RDT的应用

5月中旬,我参加了在加利福尼亚圣克拉拉万豪举办的Intel Data Center Design Conference 2018(DCDC’18)这个主要针对与数据中心设计的会议。期间我做了关于Intel RDT技术在数据中心业务质量(QoS)保障为主题的presentation。尽管在本月还有台北、上海、北京三场普通话的同主题演讲,这里还是分享下整个英文版本演讲的主要内容。

继续阅读“DCDC2018–混合部署场景下RDT的应用”

推荐阅读:
任何一个合理的应用程序的运行时

似乎每次开头都要讲述一下计算机

长久以来,我们对计算机资源的理