我有预感,某个间歇性错误可能仅在磁盘读取速度较慢时才会显现出来。故障排除很困难,因为我无法可靠地重现它。
除了通过优先级高的进程简单吞噬IO之外,还有什么方法可以让我模拟慢速硬盘驱动器?
man hdparm
看一下-X选项吗?您可以使用其中的许多功能来降低驱动器的速度,但是其中一些可能会对数据造成讨厌的后果!
我有预感,某个间歇性错误可能仅在磁盘读取速度较慢时才会显现出来。故障排除很困难,因为我无法可靠地重现它。
除了通过优先级高的进程简单吞噬IO之外,还有什么方法可以让我模拟慢速硬盘驱动器?
man hdparm
看一下-X选项吗?您可以使用其中的许多功能来降低驱动器的速度,但是其中一些可能会对数据造成讨厌的后果!
Answers:
#回声1> / proc / sys / vm / drop_caches
那会让你慢下来:)
这将迫使您从磁盘读取数据,而不是利用缓存的页面。
如果您真的想变得复杂,可以使用scsi故障注入框架每n次执行一次伪造读取错误的操作。
这绝不是一个完整的解决方案,但它可能与其他措施结合使用:有一个I / O调度程序,非常类似于流程调度程序,可以对其进行调整。
最值得注意的是,您实际上可以在不同的调度程序中进行选择:
~# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
~# echo "deadline" > /sys/block/sda/queue/scheduler
~# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
~#
deadline
可以帮助您获得更强的可重复性结果。
noop
顾名思义,它是愚蠢的,可以让您毫不费力地破坏I / O性能。
anticipatory
并cfq
都试图要聪明一点,但cfq
通常是两个聪明。(我记得,anticipatory
实际上是内核开始支持多个调度程序之前的传统调度程序。)
您可以使用虚拟机并限制磁盘访问...这是一些有关在Virtualbox 5.8中进行操作的提示。限制磁盘映像的带宽https://www.virtualbox.org/manual/ch05.html#storage-bandwidth-limit
怎么样make -j64
?在描述新的200line性能补丁的文章中,这make -j64
是一项占用大量计算机资源的任务
我最近想出了一个设置
google-drive-ocamlfuse
如果16秒的延迟不够慢,则只需拔下路由器即可。
作为参考,这是原始用例,在这里我有了这个主意:https : //github.com/goavki/apertium-apy/pull/76#issuecomment-355007128