【发布时间】: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