【问题标题】:Is there a limit on the number of hugepage entries that can be stored in the TLBTLB中可以存储的hugepage条目的数量是否有限制
【发布时间】:2019-04-11 08:11:00
【问题描述】:

我正在尝试分析虚拟机在使用大页面时获得的网络性能提升。为此,我通过更改 grub 命令行并重新启动将管理程序配置为具有多个 1G 大页面(36),并且在启动 VM 时,我确保将大页面传递给 VM。在启动 8 个虚拟机(每个都有 2 个 1G 的大页面)并在它们之间运行网络吞吐量测试时,发现吞吐量大大低于没有大页面时的吞吐量。这让我想知道,这是否与我使用的大页面数量有关。使用 TLB 可以引用的 1G 大页面的数量是否有限制,如果有,是否低于常规大小页面的限制?我怎么知道这些信息。在这种情况下,我使用的是 Ivy Bridge 系统,并且使用 cpuid 命令,我看到了类似

cache and TLB information (2):
  0x63: data TLB: 1G pages, 4-way, 4 entries
  0x03: data TLB: 4K pages, 4-way, 64 entries
  0x76: instruction TLB: 2M/4M pages, fully, 8 entries
  0xff: cache data is in CPUID 4
  0xb5: instruction TLB: 4K, 8-way, 64 entries
  0xf0: 64 byte prefetching
  0xc1: L2 TLB: 4K/2M pages, 8-way, 1024 entries

这是否意味着我在 TLB 中任何时候都只能有 4 个 1G 的大页面映射?

【问题讨论】:

  • 欢迎来到 Stackoverflow。虽然您的问题是在虚拟化场景中设置的并且涉及不同的 CPU,但您的问题基本上可以通过以下问题得到解答:stackoverflow.com/questions/40649655/…。实际上,是的,处理器的 TLB 为不同类型的条目提供了专用空间,而用于大页面的空间非常有限。
  • 是的,您已经找到了一种方法来创建非常糟糕的大页面位置。大多数对内存进行大量内核访问的工作负载在同一个 1G 巨页中具有更多访问权限。 (Linux 上的用户空间内存在使用匿名大页面时通常使用 2M 大页面)。例如,在 Haswell 中,2M 和 4k TLB 条目可以进入二级 TLB 受害者缓存,但如果 7-cpu.com/cpu/Haswell.html 完全准确,则显然 1G 条目不能。

标签: cpu cpu-architecture tlb huge-pages


【解决方案1】:

是的,当然。 TLB 条目的数量没有上限将需要 CPU 裸片中的物理空间数量不受限制。

每个架构中的每个 TLB 都有其可以容纳的条目数的上限。

对于 x86 情况,这个数字可能低于您的预期:它是 4。
在你的常春藤桥里是 4,在我的卡比湖里仍然是 4,四代之后。

值得注意的是,4 个条目覆盖了 4GiB 的 RAM (4x1GiB),如果正确使用,这似乎足以处理网络。
最后,TLBs are core resources,每个内核都有自己的 TLB 集。
如果您禁用 SMT(例如 Intel 超线程)或将内核上的两个线程分配给同一个 VM,则这些 VM 将不会竞争 TLB 条目。

但是,每个 VM 最多只能缓存 4xC 大页面条目,其中 C 是专用于该 VM 的内核数。
VM 充分利用这些条目的能力取决于主机操作系统、虚拟机管理程序和客户操作系统如何协同工作以及感兴趣的客户应用程序的内存布局(跨内核共享的页面在每个内核中都有重复的 TLB 条目)。
透明地使用 1GiB 页面很难(几乎不可能?),我不确定 hyper-visor 和 VM 将如何使用这些页面 - 我会说你需要为此提供特定支持,但我不确定。

正如Peter Cordes 所指出的,1GiB 页面使用单级 TLB(在 Skylake 中,显然还有一个二级 TLB,1GB 页面有 16 个条目)。 1GiB TLB 中的缺失将导致页面遍历,因此所有涉及的软件都使用页面感知代码非常重要。

【讨论】:

  • 值得一提的是,至少根据7-cpu.com/cpu/Haswell.html,二级 TLB 受害者缓存在 Haswell 中不包含 1G TLB 条目,因此如果您有未命中,它们必须来自 page-walker。但是 Skylake 有一个 16 条目的 2 级 TLB 用于 1G 页面,以备份 4 条目的 1 级 TLB。 7-cpu.com/cpu/Skylake.html.
  • 感谢@PeterCorder,很高兴知道并回答了。
猜你喜欢
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2015-05-29
  • 2014-01-05
  • 2015-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多