假设我要运行一个服务器,像其他 CSP 供应商一样将虚拟机借给客户。我的服务器有 20 个核心,因此总共会有 5 个 4 核实例。
我担心的是共享最后一级缓存。我希望所有实例都能很好地共享 LLC,但肯定有一些工作负载(例如流式传输)试图消耗几乎所有容量,从而损害其他工作负载的性能。
这种情况下,或者说是知名CSP厂商常见的情况,经理能做什么?除了Intel CAT还有其他解决方案吗?或者说我担心的情况不会发生?
我可能违反了本网站的部分提问规则,给您带来的不便,敬请谅解。
答案1
在您考虑的硬件和软件环境中测试您的工作负载。理想情况下是实际的生产工作,但除此之外,还要模拟客户会做的事情:事务、文件传输、编码媒体等等。查找技术博客以获取灵感。例如,Cloudflare 的“Gen X”硬件选择缺乏科学纪律,但他们在 Intel Xeon Platinum 6162 与 AMD EPYC 7642 的竞争中考虑缓存是正确的。
有多家供应商可以提供 20 核以上的 CPU,而且它们的 L3 缓存有所不同。AMDEPYC 在每个 4 核复合体中都有 L3. IBMPOWER9 每 2 个核心有专用的 L3. 英特尔至强Cascade Lake 所有核心共享 L3. 将缓存尽可能靠近核心可以减少延迟周期,从而可能对性能产生影响。
CPU 缓存在系统范围内的共享程度往往低于内存。在缓存专用于核心复合体的设计中,远程虚拟机的 4 个核心不会从其他核心窃取。是的,如果某些东西搅动了 L3 缓存,这将损害命中率,并且需要更多地使用内存,但这取决于工作负载。
首先使用无感知调度程序和无 QoS 进行测试,即不明确管理 L3。即使是对核心的简单分配也应该为核心提供大致相等的缓存份额。找出真正的瓶颈所在,可能是存储或网络或其他一百个地方。
如果您需要精细控制缓存,请咨询您的供应商如何在您选择的 CPU 和虚拟机管理程序上做到这一点。英特尔有资源总监。AMD 有平台服务质量。两者都出现在 Linux 内核中,AMD 最近。但请在测试后这样做,这样您就会知道您的工作负载对缓存的影响有多大。