linux – 如何测试ionice的效果(使用cfq调度程序对设备进行测试)?

前端之家收集整理的这篇文章主要介绍了linux – 如何测试ionice的效果(使用cfq调度程序对设备进行测试)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试构建一个实验来测量ionice的效果.我想做的是(每 another answer on serverfault)导致足够频繁的I / O,使得任何I / O都缺乏充分的“niced”过程.

基于another answer on serverfault,我认为我需要每250ms对一个常见的cfq预定设备进行至少一次实际的I / O操作.我的想法是写一个有一个循环的琐碎程序

>写入公共设备上的(可配置)文件,
>执行fsync()(强制执行明确的I / O操作),
>使用usleep()延迟可配置的时间
>定期使用lseek()来截断文件(这样我就不会填充文件系统)

然后,我使用ionice -c3(空闲调度类)对公共设备上的一个文件启动一个程序实例.我同时使用默认(尽力而为)调度类运行各种实例,在公共设备上指定不同的文件(改变延迟值).

我的假设是,对于“尽力而为”过程的250ms或更长的延迟值,我会看到“空闲”过程所取得的进展;对于小于250毫秒的值,我会看到“空闲”过程几乎没有取得任何进展.

我的观察是两个过程的表现没有差别;他们都取得了类似的进展.只是为了确定(如果挂钟指示“尽力而为”过程执行I / O的速度比每250毫秒快得多),我启动了多个“尽力而为”过程的同时实例,指定否(零)延迟.尽管如此,我发现两个调度类中的进程之间的性能没有差异.

只是为了确定,我重新检查了调度程序类:

$cat /sys/block/xvda/queue/scheduler
noop anticipatory deadline [cfq]

我错过了关于cfq调度程序如何工作的内容是什么?

如果重要,那就是2.6.18内核.

解决方法

我尝试使用负载生成器(如stress -i n或stress -d n)来测量效果,其中“n”是进程数.在一个窗口中运行它.在另一个中尝试nmon或iostat,并在同一块设备上尝试代表性的应用程序进程.通过各种电离设置(或应用程序内的测试响应)了解iostat中的服务时间如何变化.

至于cfq,整个RHEL5生命周期似乎都有变化(2.6.18).在我的应用程序服务器上,由于争用问题我不得不转移到noop和截止日期的电梯,这是显而易见的.

猜你在找的Linux相关文章