通过dmesg优化磁盘I/O性能的核心是分析日志定位瓶颈,针对性调整配置,具体步骤如下:
sd
(磁盘设备)、ata
(ATA接口)等关键词,检查是否有I/O error
、device timeout
等硬件错误。
dmesg | grep -i 'scheduler'
查看当前使用的调度算法(如cfq
、deadline
、noop
),判断是否与工作负载匹配。
noop
调度器,机械盘使用deadline
。echo 'noop' > /sys/block/sda/queue/scheduler
切换(需根据设备类型选择)。/etc/default/grub
中GRUB_CMDLINE_LINUX_DEFAULT
参数,添加elevator=noop
,重启后生效。ordered data mode
,可尝试改为writeback
(需确保数据安全)。mount -o remount,noatime,writeback /dev/sda1 /mnt
。dmesg
确认当前预读值(如read_ahead_kb
),顺序读场景可增大预读(如blockdev --setra 8192 /dev/sda
,单位为512B)。/sys/block/sda/queue/nr_requests
,适当增加队列长度(如从128调整为256),提升吞吐量。iostat -x 1
监控await
(平均等待时间)、svctm
(服务时间),确保优化后指标下降。ata1: EH complete
),需优先更换硬件而非仅调整软件参数。参考来源: