Wil*_*ill 20 linux filesystems optimization ramdisk
我有一个程序,它非常重视文件系统,读取和写入一组工作文件.这些文件的大小为几千兆字节,但不大到不适合RAM磁盘.这个程序运行的机器通常是Ubuntu Linux机箱.
有没有办法将文件管理器配置为具有非常大的缓存,甚至可以缓存写入以便稍后访问磁盘?
或者有没有办法创建一个可以直接写入真实磁盘的RAM磁盘?
Tho*_*nin 23
默认情况下,Linux将使用空闲RAM(几乎全部)来缓存磁盘访问,并将延迟写入.内核用来决定缓存策略的启发式方法并不完美,但在特定情况下击败它们并不容易.此外,在日志文件系统(即现在的所有默认文件系统)上,对磁盘的实际写入将以崩溃的弹性方式执行; 这意味着一点开销.您可能想尝试摆弄文件系统选项.例如,ext3尝试使用data=writeback或甚至安装async(这些选项可以提高文件系统性能,代价是降低对崩溃的恢复能力).此外,用于noatime减少文件系统活动.
以编程方式,您可能还希望通过内存映射(with mmap)执行磁盘访问.这有点实际,但它可以更好地控制数据管理和优化.
ire*_*ses 17
您是否检查过您的磁盘是否正在使用其内置写入缓存?它可以产生相当大的差异.在Linux上,您可以使用以下方法切换行为hdparm:
/sbin/hdparm -W 0 /dev/hda 0 Disable write caching
/sbin/hdparm -W 1 /dev/hda 1 Enable write caching
Run Code Online (Sandbox Code Playgroud)
显然,如果启用了写入缓存,那么如果系统不正常地关闭(例如断电),则可能会导致数据丢失或损坏.
在软件方面,Linux内核使用两个主要数字来参数化写行为.
/proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_background_ratio
Run Code Online (Sandbox Code Playgroud)
现代默认设置是更频繁地写入,以避免巨大的写入峰值.您可以尝试调整这些以满足您的需求.以下是对可用参数以及如何尝试调整它们的出色讨论.
dan*_*uer 12
您可以使用物理分区创建ramdisk和RAID-1.看看--write-mostly和--write-behind选项.您可以使用这些来使物理磁盘成为不可读取的物理磁盘(仅写入),并分别设置未完成的写入操作的数量.
或者,查看pdflush的文档.这里有一个很好的页面:http://www.westnet.com/~gsmith/content/linux-pdflush.htm(也由ire_and_curses链接)除了提到的内容之外,你可能想要将swappiness高达100来支持磁盘缓存超过交换.
但是值得学习它是如何工作的,并将其调整到您的特定应用程序.Linux已针对一般情况进行了调整,只有您了解具体情况的不同之处.:)
| 归档时间: |
|
| 查看次数: |
33848 次 |
| 最近记录: |