在调试 Windows 客户端的 hg 克隆速度慢的问题时,我发现通过将默认操作系统页面大小从 8gb 减少到 1gb 以强制利用(丰富的)物理内存,可以显著提高 EC2 2012 虚拟实例上的 hg 克隆性能(速度提高 10 倍)。
为了进行测试,我运行以下克隆命令:
hg clone -U --traceback --verbose --profile --time https://hg.mozilla.org/mozilla-central
在 Windows Server 2012 上:
使用默认设置(操作系统管理页面大小):
time: real 653.507 secs (user 115.891+0.000 sys 486.922+0.000)
使用手动设置(页面文件最大大小为 1024mb):
time: real 179.646 secs (user 56.594+0.000 sys 58.234+0.000)
在 Windows Server 2008 上:
使用手动设置(页面文件最大大小为 1024mb):
time: real 1273.845 secs (user 98.905+0.000 sys 592.585+0.000)
我无法复制 2008 年到 2012 年的性能提升,无论操作系统页面大小如何,相同的命令总是很慢。
我非常有信心,我们可以排除软件、网络和硬件方面的考虑,因为我已经尽我所能尽可能准确地复制环境(虚拟硬件相同:c3.2xlarge、16gb ram、80gb ssd、相同的网络子网等)。我认为(因为 Matt Mackall 在 hg 上的评论漏洞我提出,关于用户/系统计时比率的重要性,我们实际上是在研究操作系统级别的 io 或内存配置问题。
除了页面文件大小之外,我还应该看看什么?
答案1
除了大小差异之外,我想不出页面文件有什么不同(如果您正在执行非基于 wim 的克隆,那么您当然会遇到页面文件的性能问题)。消除或减少页面文件大小不会影响使用的 RAM 量。请参阅https://serverfault.com/a/75027/3528
综上所述,对于默认的 Windows 设置,EC2 是否会进行某种形式的内存膨胀?