虚拟化 – 虚拟机上的Ext4缓存选项

我正在尝试加速用于开发/自动化测试环境的虚拟机的站立,并希望验证有关磁盘写入缓存的一些假设.

我正在使用ext4作为VM中的根文件系统,我并不真正关心掉电情况.如果断电并且磁盘损坏,整个机器可以在几分钟内重建.对我来说,这意味着可以安全地应用以下选项,它应该对应用程序没有任何影响 – 它们只会影响缓冲数据写入磁盘本身的方式,但缓存的内存中表示将始终准确:

> nobarrier
> data = writeback
> nobh
> commit = 3600

它是否正确?还有其他的ext4参数我应该注意性能改进吗?

最佳答案
journal_async_commit,noauto_da_alloc,dioread_nolock.有关说明,请参见ext4 documentation.

另外nouser_xattr,noacl如果你不使用它们可能会在第一次查找时提供较小的性能改进(但除非你使用数百万个文件的订单,否则不相关).

请注意,使用commit = 3600(同时由于批处理而改善某些操作的总体时间)可能无法执行您想要的操作.当它触发时(可能比3600早得多,由于期刊满的条件)你会有大量的I / O突然停止,直到它完成后大部分停在机器上的任何东西(这可能是几分钟,取决于你的期刊大小和I / O速度).较小的值将为您提供更多但更小的元数据突发,因此它看起来不像机器“被绞死”.它对您来说可能是也可能不是问题.

如果你不想要jounrnal,你可能想要完全禁用它 – 注意它可能会稍微改善性能,但它也可能使它变得更糟:

tune2fs -O ^has_journal /dev/sdXX

此外,一些特定的负载(例如在小时间帧内创建和删除许多小文件,例如繁忙邮件服务器的SMTP邮件队列)可能自相矛盾地实际上更喜欢data = journal to data = writeback(甚至根本没有日志) – 因为它将只使用日志(这是线性写入而不是随机写入,因此在非SSD存储上更快).

但最重要的是 – 你必须通过基准测试才能找到最适合你的产品 – 没有银弹.

转载注明原文:虚拟化 – 虚拟机上的Ext4缓存选项 - 代码日志