我知道Varnish使用内存映射技术来caching内存中的数据,如果我在一台机器上执行以下命令,在整个Varnish的性能上会有什么损失?
例如
总内存大小= 4GB,随机生成的test.txt = 2GB
1. cat test.txt 2. mv test.txt /another-partition 3. cp test.txt /another-partition 4. mv test.txt /another-dir 5. cp test.txt /another-dir
有趣的问题!
作为参考,来自VM子系统作者的这个页面会给你一个好主意,可能发生什么;
http://linux-mm.org/PageReplacementDesign
请注意,这实际上很难回答它当前的forms(如果你正在谈论文件支持的caching),因为它依赖于caching的热度,caching项目的时间以及caching中每个对象的“热度” 。
假设如下:
由于你的清漆caching大小是10G,它永远不会完全适合内存,因此下面的公式是比较有代表性的
所以,以下可能是你运行的所有命令的结果。
这是绝对最坏的情况。 所以,从广义上说,这个影响是什么?
97%的服务请求没有可忽略的影响。
在受影响的3%中,预计服务时间会有更长的延迟 – 大概是500毫秒。
但是不幸的是,其中2%左右的不幸请求的3%本来会很慢,因为他们想从6500Mb的高速caching中find一些永远不在pagecache中的东西! 但是他们现在却遭受了高磁盘利用率的困扰。
所以,总而言之,就我所做的假设而言,你会看到广义的效率损失3%。 (100%的效率将是每个请求的所有对象都在内存之外)。
在这个人为的例子中,“正常”运行效率约为98%。
对不适合内存的caching不坏!
答案取决于您的caching使用的存储后端。
如果您已将清漆configuration为使用基于文件的存储,则您的文件操作可能会影响性能。
在一个具有4个RAM的专用系统上,我build议你使用“malloc”,大小约为3 GB,作为caching的存储空间。
请参阅: https : //www.varnish-cache.org/docs/trunk/users-guide/storage-backends.html