我有以下设置:
- 在 Dell PowerEdge R320 上运行的 Debian 稳定版(Linux 内核 3.16.7)
- PERC H310 Mini 控制器上 RAID1 中的两个 SATA 硬盘驱动器,显示为
/dev/sda
- dm-crypt 目标
dm-0
支持/dev/sda2
- 具有单个上述物理卷的单个 LVM 卷组
dm-0
- 上述卷组中的多个逻辑卷
dm-1
等,格式为dm-2
ext4
发生的情况是,当单个进程开始批量写入逻辑卷时,所有其他进程都严重缺乏 I/O - 系统变得非常无响应(涉及 I/O 时延迟长达 30 秒)。
我认为是 I/O 调度程序负责确保不会发生这种情况。我看到sda
使用cfq
:
# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
但是所有其他设备映射器目标都报告没有 I/O 调度程序:
# cat /sys/block/dm-0/queue/scheduler
none
# cat /sys/block/dm-1/queue/scheduler
none
# cat /sys/block/dm-2/queue/scheduler
none
我的问题是,为什么没有针对设备映射器目标的 I/O 调度,我可以启用它,或者我怎样才能使该系统在 I/O 负载重的情况下响应?
首先,DM 设备没有任何 I/O 调度程序是完全正常的,因为(有特定例外)
关于您记录的低性能,请考虑您的 H310 控制器不仅没有缓存,而且甚至禁用了物理磁盘的 DRAM 缓存,这意味着您的系统无法通过缓存降低延迟。
将其与加密相结合,其中读取-修改-写入是常见行为(由于对加密容器的未对齐写入访问),导致写入 I/O 性能异常差。