首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化Linux磁盘缓存行为以获得最大吞吐量

问优化Linux磁盘缓存行为以获得最大吞吐量
EN

Server Fault用户
提问于 2012-02-15 10:48:50
回答 3查看 12.8K关注 0票数 12

我在这里遇到了一个最大吞吐量问题,需要一些关于如何调整我的旋钮的建议。我们正在运行一个用于备份分发的10 10Gbit文件服务器。这是一个两个磁盘S-ATA2 2安装在一个大规模集成电路MegaRAID控制器.服务器也有24G内存。

我们需要用最大的吞吐量来镜像我们上一次上传的备份。

用于“热”备份的RAID0为我们提供了大约260 MB/秒的写入和275 MB/秒的读取。一个大小为20 1GB的经过测试的tmpfs给我们大约1GB/秒的速度。这种吞吐量是我们所需要的。

现在,我如何调优Linux的虚拟内存子系统,以便尽可能长时间地在内存中缓存上传的文件,而不将它们写入磁盘(甚至更好:写入磁盘并将它们保存在内存中)?

我设置了以下sysctl,但它们没有提供我们期望的吞吐量:

代码语言:javascript
复制
# VM pressure fixes
vm.swappiness = 20
vm.dirty_ratio = 70
vm.dirty_background_ratio = 30
vm.dirty_writeback_centisecs = 60000

理论上,这应该给我们16 to的缓存I/O,并等待几分钟,直到它写到磁盘。不过,当我对服务器进行基准测试时,我发现对编写没有任何影响,吞吐量并没有增加。

需要帮助或建议。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2012-02-15 14:44:32

通过查看您设置的变量,似乎您主要关注的是写性能,而不关心由于停电可能造成的数据丢失。

您将只获得延迟写入的选项,以及使用带有异步写入操作的写回缓存。同步写入操作需要提交到磁盘,而且不会是懒散的写入操作。您的文件系统可能导致频繁的页面刷新和同步写入(通常是由于日志记录,特别是在data=journal模式下使用data=journal)。此外,甚至“背景”页面刷新将干扰未缓存的读取和同步写入.,从而减慢他们的速度。

通常,您应该采取一些度量来查看正在发生的事情--您是否看到您的复制过程被置于"D“状态,等待put完成I/O工作?您看到磁盘上存在大量同步写入活动吗?

如果所有这些都失败了,您可能会选择设置一个显式的tmpfs文件系统,在该系统中,您可以将备份复制到并仅在事后将数据与磁盘同步--甚至是自动使用inotify。

对于读取缓存,事情要简单得多--有一个fcoretools fadvise实用程序,它具有--willneed参数,它建议内核将文件的内容加载到缓冲区缓存中。

编辑:

vm.dirty_ratio = 70,理论上这应该给我们16 to的缓存I/O,并等待一些分钟,直到它写到磁盘。

这不会对您的测试场景产生很大影响,但是在您的理解中存在一个误解。dirty_ratio参数不是系统总内存的百分比,而是系统空闲内存的百分比。

有一篇关于编写重负载的调优的文章,提供了更深入的信息.

票数 6
EN

Server Fault用户

发布于 2012-02-15 14:40:03

或者拿更多的磁盘..。您所拥有的驱动器阵列配置不支持所需的整个过程。在这种情况下,解决方案应该重新设计,以满足您的实际需求。我知道这只是备份,但避免进行疯狂的修复是有意义的。

票数 3
EN

Server Fault用户

发布于 2012-02-15 14:37:19

使用内存缓存可能意味着数据丢失,就好像出了问题一样,内存中没有保存到磁盘中的数据将丢失。

也就是说,需要在文件系统级别进行调优。

例如,如果您使用的是ext4,您可以尝试挂载选项:

barrier=0

这是:“禁用jbd代码中的写屏障。写屏障强制在磁盘上对日志提交进行适当的排序,使易失性磁盘写入缓存安全地使用,从而导致某些性能损失。如果您的磁盘以某种方式被电池支持,禁用屏障可能安全地提高性能。安装选项”屏障“和”no屏障“也可以用于启用或禁用屏障,以便与其他ext4安装选项保持一致。”

更多网址:http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/360310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档