加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 17:10:47 所属栏目:Linux 来源:网络整理
导读:我正在尝试构建一个实验来测量ionice的效果.我想做的是(每 another answer on serverfault)导致足够频繁的I / O,使得任何I / O都缺乏充分的“niced”过程. 基于another answer on serverfault,我认为我需要每250ms对一个常见的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和截止日期的电梯,这是显而易见的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读