当您拥有 LVM 时,您将拥有一个用于/sys/block物理卷、每个单独逻辑卷和原始设备的调度程序条目。
我们有一个运行 Xen 管理程序 4.0(3Ware 9650 SE 硬件 RAID1)的 Debian 6 LTS x64、内核 2.6.32 系统。在每个逻辑卷上运行虚拟机时,如果您想影响操作系统如何调度它们,您需要在哪个逻辑卷上设置调度程序?如果将逻辑卷设置为deadline,那么当物理卷设置为 时,它还会做任何事情cfq吗?如果您确实将它设置为逻辑卷上的截止日期,即使由于其他 LV 上的 IO 设置为 IO 而导致磁盘速度变慢,这些截止日期也会得到遵守cfq吗?
问题与虚拟机上的 IO 导致其他虚拟机速度减慢有关。所有来宾都在内部使用 noop 作为调度程序。
编辑:根据this,在多路径环境中,只有DM的调度程序才会生效。因此,如果我想以某种deadline方式处理虚拟机之间的 IO ,我必须将物理卷的 DM 路径(在我的情况下为 dm-1)设置为deadline. 那正确吗?还有sdc的调度器,是我dm-1的原始块设备。为什么不应该这样做呢?
edit2:但是有人在评论中说 dm-0/1 在较新的内核中没有调度程序:
famzah@VBox:~$ cat /sys/block/dm-0/queue/scheduler
none
Run Code Online (Sandbox Code Playgroud)
在我的系统(Debian 6,内核 2.6.32)上,我有:
cat /sys/block/dm-1/queue/scheduler
noop anticipatory [deadline] cfq
Run Code Online (Sandbox Code Playgroud)
还有一个问题,我有多路径设置吗?pvs显示:
# pvs
PV VG Fmt Attr PSize PFree
/dev/dm-0 universe lvm2 a- 5,41t 3,98t
/dev/dm-1 alternate-universe lvm2 a- 1,82t 1,18t
Run Code Online (Sandbox Code Playgroud)
但是它们是用 /dev/sd[bc] 创建的。这是否意味着我有多路径,即使它是标准的 LVM 设置?
我想,主要问题是我必须在 sdc 或 dm-1 上设置调度程序吗?如果我做 iostat,我会看到很多访问权限:
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdc 0,00 0,00 13,02 25,36 902,71 735,56 42,68 0,08 2,17 0,73 2,79
dm-1 82,25 57,26 12,97 25,36 902,31 735,56 42,72 0,18 4,73 0,84 3,23
Run Code Online (Sandbox Code Playgroud)
那么,什么是什么,谁是老板?如果是 sdc,我可以告诉您,将其设置为截止日期对我的 VM 的性能没有任何影响。查看“请求合并”列(前两个)中的差异,我认为是 dm-1 控制调度。
所以,答案很简单:底层设备。/sys/block/*/queue/scheduler当没有要配置的调度程序时,较新的内核仅具有“无” 。
然而,由于我不知道的原因,该服务器上的设备被创建为多路径设备,因此我/dev/sd[bc]过去对调度程序的摆弄从未执行过任何操作。现在我用dm-1and设定了dm-0最后期限read_expire=100(write_expire=1500比正常情况严格得多),结果看起来非常好。
下图显示了另一台具有每小时任务的虚拟机对虚拟机中磁盘延迟的影响:

您可以清楚地看到我更改调度程序参数的那一刻。
| 归档时间: |
|
| 查看次数: |
5191 次 |
| 最近记录: |