Linux文件系统缓存:将数据从Dirty移动到Writeback

前端之家收集整理的这篇文章主要介绍了Linux文件系统缓存:将数据从Dirty移动到Writeback前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的软件RAID可以写800 MB / s持续.我看到当cat / proc / meminfo | grep回写:返回> 2 GB.但是,大多数情况下,回写是0.5 GB的圆形,其性能大约为200 MB / s.

有很多数据要写. cat / proc / meminfo | grep脏:说脏缓存是90 GB.

据我所知,Dirty是需要编写的内容,而Writeback是主动写入磁盘的内容.因此,Dirty中可能存在块,这些块位于Writeback中块旁边的磁盘上,并且这些块不会写在同一个go中.

这可以解释为什么如果Writeback很小,我的性能会更差,因为花费的时间要花费更多的时间来写一些额外的MB.

所以我的问题是:我可以以某种方式告诉内核将更多数据从Dirty转移到Writeback更积极地从而增加Writeback吗?

– 编辑 –

这是在低性能期间:

  1. $cat /proc/meminfo
  2. MemTotal: 264656352 kB
  3. MemFree: 897080 kB
  4. Buffers: 72 kB
  5. Cached: 233751012 kB
  6. SwapCached: 0 kB
  7. Active: 3825364 kB
  8. Inactive: 230327200 kB
  9. Active(anon): 358120 kB
  10. Inactive(anon): 47536 kB
  11. Active(file): 3467244 kB
  12. Inactive(file): 230279664 kB
  13. Unevictable: 0 kB
  14. Mlocked: 0 kB
  15. SwapTotal: 204799996 kB
  16. SwapFree: 204799996 kB
  17. Dirty: 109921912 kB
  18. Writeback: 391452 kB
  19. AnonPages: 404748 kB
  20. Mapped: 12428 kB
  21. Shmem: 956 kB
  22. Slab: 21974168 kB
  23. SReclaimable: 21206844 kB
  24. SUnreclaim: 767324 kB
  25. KernelStack: 5248 kB
  26. PageTables: 7152 kB
  27. NFS_Unstable: 0 kB
  28. Bounce: 0 kB
  29. WritebackTmp: 0 kB
  30. CommitLimit: 337128172 kB
  31. Committed_AS: 555272 kB
  32. VmallocTotal: 34359738367 kB
  33. VmallocUsed: 544436 kB
  34. VmallocChunk: 34124336300 kB
  35. HardwareCorrupted: 0 kB
  36. AnonHugePages: 0 kB
  37. HugePages_Total: 0
  38. HugePages_Free: 0
  39. HugePages_Rsvd: 0
  40. HugePages_Surp: 0
  41. Hugepagesize: 2048 kB
  42. DirectMap4k: 149988 kB
  43. DirectMap2M: 17649664 kB
  44. DirectMap1G: 250609664 kB
  45.  
  46.  
  47. cat /proc/sys/vm/dirty_background_ratio
  48. 1

降低dirty_writeback_centisecs只会在更小的位中删除脏.

解决方法

你没有给出整个/ proc / meminfo输出,所以我不知道你事先是否有任何调整.

您可以使用的两个立即可调参数就是这些.

的/ proc / sys目录/ VM / dirty_background_ratio

  1. dirty_background_ratio
  2.  
  3. Contains,as a percentage of total system memory,the number of pages at which
  4. the pdflush background writeback daemon will start writing out dirty data.

默认值为10.将其增加到30或40并进行测试.

的/ proc / sys目录/ VM / dirty_writeback_centisecs

  1. dirty_writeback_centisecs
  2.  
  3. The pdflush writeback daemons will periodically wake up and write `old' data
  4. out to disk. This tunable expresses the interval between those wakeups,in
  5. 100'ths of a second.
  6.  
  7. Setting this to zero disables periodic writeback altogether.

默认值为500.将其设置为300并进行测试.

请记住这些不是绝对值.您必须经过反复试验才能找到最适合您环境的方法.

我只是根据您提供的描述并假设这些值是正确的来计算出这些值.

如果安装了kernel-doc软件包,请转到sysctl,然后打开vm.txt进行阅读.

猜你在找的Linux相关文章