一台PC中的至强内核:微软新的x86数据中心级计算机

2020-07-06 02:23:05

本周,微软发布了一个新的博客,专门介绍Windows内核的内部结构。该博客的目的是跨各种架构深入研究内核,并深入研究内核、组件、组织等元素,在本文中,重点放在调度器上。我们的目标是在接下来的几个月里开发这个博客,深入了解幕后发生的事情,以及它做这些事情的原因。然而,我们对微软看起来正在开发的一个大系统有了一个初步了解。

对于那些想看博客的人来说,它真的很棒。请看这里:

在讨论Windows的可伸缩性时,Windows核心内核平台的首席程序经理Hari Pulapaka展示了任务管理器的屏幕截图,该截图来自他所描述的运行Windows的“预发布Windows数据中心类机器”。图片如下:

如果您对任务管理器中的线程数量并不感到惊讶,您可能会注意到,在任务管理器的侧面有一个滚动条。没错:在启用超线程的情况下,896个内核意味着1792个线程,这对于任务管理器来说太多了,无法同时显示,而且这种新型的“数据中心类机器”看起来可以访问所有线程。但是,除了每个线程100%加载之外,我们在这里真正看到的是什么呢?

因此,首先列出的CPU是至强白金8180,这是英特尔内核数量最高、性能最高的Xeon Scalable‘Skylake-SP’处理器。它有28个内核和56个线程,通过数学计算,我们得到了一个32插槽系统。事实上,在所有以100%速度运行的线程下面的凸块中,字面上写着“套接字:32”。这是32个完整的28核处理器,在一个版本的Windows下一起运行。同样,问题是如何做到这一点?

正常情况下,英特尔最多只对8个插槽使用至强白金处理器进行评级。它通过每个处理器使用三个QPI链路来实现这一点,以形成双盒配置。Xeon Gold 6100系列最多支持四个插座和三个QPI链路,确保每个处理器彼此链接,然后该系列的其余处理器支持单插槽或双插槽。

英特尔没有提到的是,有了合适的连接结构,系统建造商和原始设备制造商可以将几个4插槽或8插槽系统链接到一个单一的多插槽接口中。除了要使用的交换矩阵和消息传递之外,这里还有其他因素在起作用,例如延迟和内存体系结构,它们已经存在于2-8插槽平台中,但在超过8个插槽后会大幅增加。如果一个处理器需要两个交换矩阵跳跃的内存,而处理器跳跃距离很远,那么在一定程度上将该数据存储在本地SDD中可能会更快。

至于面料:我实际上要在这里打个比方。AMD的EPYC平台最高可达两个插槽,但对于插槽之间的互连,它使用来自每个处理器的64个PCIe通道来托管AMD的Infinity Fabric协议作为链路,并具有128个PCIe通道的组合带宽优势。例如,如果EPYC有256个PCIe通道,或者将每个链路的PCIe通道数减少到32个,那么我们最终可能会得到在Infinity Fabric上构建了两个以上插槽的EPYC服务器。对于英特尔CPU,我们仍在使用PCIe通道,但我们采用以下三种方式之一:使用PCIe控制全路径,使用PCIe控制Infiniband,或者使用自定义FPGA控制,再次控制PCIe。这基本上就是现代超级计算机的运行方式,尽管不是作为一个统一的系统。

不幸的是,这就是我们超出了我的深度的地方。去年,当我与一家大型服务器OEM交谈时,他们表示,四插槽和八插槽系统正变得越来越罕见,因为每个CPU本身都有更多的内核,对这样大的系统的需求已经不复存在。在Nehalem问世之前的日子里,大型的8插槽32核服务器非常流行,但今天已经不是那么流行了,除非有一家公司愿意花25万美元以上(在签订支持合同或DRAM/NAND之前)购买一套8插槽系统,否则这是为城里的大公司保留的。今天,这些都是云提供商。

为了获得32个插槽,我们可能会看到8个四插槽系统以这种方式连接到一个大型刀片式基础设施中。它可能需要半个机架,不是整个机架,你的猜测在价格或耗电量方面和我的一样好。在上面的屏幕截图中,它确实写着‘虚拟化:启用’,鉴于我们谈论的是微软,这可能是他们内部计划的Azure系统之一,要么出租给防务类承包商,要么在实例中分割给其他人。

我试着联系哈里,以获得更多关于这个系统的信息,如果我们得到任何信息,我会报告的。如果这些大型32插槽系统将在Azure上广泛使用(从最精简的意义上讲),微软可能会发布官方声明。

发表评论我猜这是微软和英特尔的合资企业。英特尔称新的至强是可扩展的是有原因的,我相信这款系统有新的芯片组,可以扩展到8到16到32个CPU,甚至更多。十多年来,英特尔拥有8个CPU系统--自从多核CPU问世以来,我最大的问题是8个单核盒和8核CPU在性能上有什么不同。当然,萌芽中的Zen架构系统有一些物理限制,比如使用896进程系统和112个8核ZEN进程系统,我认为英特尔/微软已经找到了一种互连可伸缩的方法,这带来了在CPU上拥有更多内核的价值的有趣思考。特别是如果系统设计为可插拔,并且其中一个CPU出现故障,则不会导致整个系统停机。回覆。

这里到底承诺了什么?一个由28个核心元素组成的32个元素的集群,甚至是一个由8*28个核心元素组成的4个元素的集群也没什么大不了的;集群操作系统无疑对MS有用,但不是什么重大突破。那么,这是不是声称这是单个一致的地址空间呢?就像塞金下面说的,为什么?连贯性在这里给您带来了什么?如果它不连贯,那么什么是新的呢?他们成功实现大规模一致性的关键是不会在延迟和额外硬件(目录等)方面付出巨大代价吗?回覆。

那么32核单CPU和双16核系统有什么不同呢?在单一操作系统中,我们通常必须运行多个CPU,但现在我们有了多核系统,这对笔记本电脑来说很棒,但是当我们谈到服务器时-为什么不在包装盒中也有32个CPU呢?实际上,核心基本上可以是每个CPU核心多个套接字应答。

你正在方便地抽象出所有能回答你问题的实际细节。回覆。

那么,这是不是说这是一个单一的连贯地址空间呢?几乎可以肯定。正如塞金姆下面说的,为什么?连贯在这里给你带来了什么?";没有什么特别好的。使用SMP甚至2节点优化的NUMA软件的诱惑,结果却发现它的可伸缩性不超过16-32个线程。回覆

欢迎来到20年前的SSI,SKMD,MOSIX等…。到目前为止,这条建筑大道上有一条身体的踪迹。与任务迁移、负载共享、MPI等的其他变体相比,没有什么显著的改进。到目前为止,在99.99999999999%的用例中证明了复杂性是合理的。到目前为止,Windows在日程安排和稳定性方面有着如此坚实的记录,我肯定一有机会就会签约接受更多的痛苦……。/讽刺回复。

有一点不同的是,这只野兽的896个内核中的一个比20年前的大型机更强大,现在你有896个,大小至少是它的十分之一。回覆。

这与单一系统映像没有什么不同。只是密度更高而已。像CRAY,SGI,富士通等公司。我一直在使用他们能拿到的任何处理器,并将它们连接到高速、低延迟结构,并从操作员级别提供此类机器的单一系统映像视图。当CRAY/SGI使用具有1-N核的Alpha、MIPS opteron和Xeons进行此操作时。一旦Beowulf出现,事情就以这种方式迁移到使用商品或前沿,但仍然是现成的具有中央控制器节点的独立节点网络……。在这一点上,这是一条相当陈旧的道路。问题是,MSFT能否提供令人信服的许可选项,并使其真正发挥作用?回覆。

一个可能的差异可能是内存使用情况,这取决于总线是如何响应的。

呃,不。内存使用率必须是每个刀片的本地内存使用率,否则它将表现得像垃圾一样。电力效率也会更差。回覆