我遇到了一个问题,写入文件会导致 5 到 15 秒的暂停,这种情况只发生在写入时。到目前为止,我已经使用 data=writeback 作为选项重新挂载了文件系统,并将 /sys/block/sdb/queue/max_sectors_kb 设置为 64 以缩短队列。
我可以尝试其他方法来解决这个问题吗?
答案1
您是否正在读取和写入大量文件?
mount -o remount,noatime,nodiratime /挂载点
如果您不需要知道文件的最后访问时间,这也可以提供帮助。
您使用哪种 IO 调度程序?Deadline/Anticipatory 有一些奇怪的极端情况会导致问题。CFQ 通常相当不错,但是,其他可能更适合您的应用程序: http://www.linux-mag.com/id/7564/2/
屏障是否已启用或禁用?某些控制器支持屏障,但写入性能会受到影响。mount -o remount,nobarrier /mountpoint 或者 mount -o remount,barrier=0 /mountpoint
答案2
我建议升级到 ext4,您可以就地执行此操作,并且它确实具有更好的写入性能。
如果你同时读取和写入 FS,那么使用 data=journal 进行挂载将大幅提高性能。
下一步要尝试的是调整 bdflush 参数 - 以更频繁地写入脏缓冲区。
您可以检查正在写入的磁盘,如果是 RAID 阵列,则驱动器可能有问题;或者确保写入缓存已打开。
答案3
您的文件系统是否已满。当文件系统空间使用率接近 100% 时,许多文件系统(ext3 并不是最糟糕的)会变得越来越慢。