通过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),需优先更换硬件而非仅调整软件参数。参考来源: