Linux - 重新运行程序使其速度更快,即使我在执行之间删除缓存

问题描述 投票:0回答:1

因此,我一直在使用 unikernel 和各种虚拟机管理程序来获取文凭,在测试过程中我注意到,当我反复运行 unikernel 时,第一次后的启动时间会更少。 由于我想根据平均(和最小/最大)启动时间得出结论,因此我认为最好了解造成这种差异的因素,并可能在我的论文中对其进行解释。

我查了一下并尝试了 /proc/sys/vm/drop_caches 解决方案。正如预期的那样,当在执行之间删除缓存时,启动时间会增加。然而,我注意到在某些情况下(目前它发生在solo5虚拟机管理程序中,尽管过去我也注意到了firecracker的情况),即使我删除缓存,启动时间仍然会逐渐减少。对我来说,这意味着要么我在删除缓存时做错了什么(但我无法想象是什么),要么涉及另一个加快执行速度的因素。

以下是一些测量示例(启动时间以微秒为单位):

546761
420956
418097
411082
328317
217346
213670
216441
412114
285624
287915
211838
185795
113150
77929
73377
79727
79278
74201
78300
Average: 236595
Min: 73377
Max: 546761

(当我在不删除缓存的情况下运行它时,平均时间约为 40,000 μs)

我使用的具体命令是

sudo sync ; ignore=$(sudo echo 3 | sudo tee /proc/sys/vm/drop_caches)

如果有人能想到可能出了什么问题或者可能有什么其他因素在起作用,我将不胜感激。我认为这对于我的文凭来说并不是绝对必要的,但无论如何我很好奇发生了什么。

linux performance caching memory process
1个回答
0
投票

Mat 的评论是正确的。我查找了刷新磁盘缓存并使用此answer中的命令,我能够减少观察到的减少。当我还添加了对不相关文件的读取(我将 cat 的输出发送到 /dev/null)以便用不相关数据填充磁盘缓存的剩余 MB 时,结果变得非常一致。

© www.soinside.com 2019 - 2024. All rights reserved.