您的位置首页生活百科

100%磁盘是什么,为什么会有100%磁盘?

100%磁盘是什么,为什么会有100%磁盘?

的有关信息介绍如下:

100%磁盘是什么,为什么会有100%磁盘?

100%磁盘是在没bug的情况下最容易达成的成就了……当然,接近100%的磁盘时间比接近100%的磁盘吞吐量更容易达成,因为对于机械硬盘来说,大吞吐量只有在顺序读写时才可能。实际上计算机总会时不时有那么一段时间磁盘是满载的——100%磁盘时间很.正.常,是的,很正常。

不过磁盘使用率实际上没什么用,判定硬盘瓶颈的数据是“响应时间”,严格得来说是应用程序在这个时刻要求操作系统读/写某个扇区,到这个操作完成所消耗的时间的期望。

当然,队列长度(这里指的是操作系统队列,不是硬件队列)越长,响应时间越长,但是只要队列不是空的,这就会为磁盘活动时间贡献出微小的一毫秒,所以更有用的数据是平均队列长度而不是平均活动时间。粗略估计的话,

响应时间=单请求评论响应时间*(队列长度+1),

但是这个估计实际上只有数量级上的准确性。还可以这样估计,

响应时间=队列完成时间+单请求平均响应时间,

实际情况通常比这个估计要好一些,但是要估计队列完成时间要考虑更多的因素。

所以,100%硬盘活动时间“不一定”使整个系统的响应时间产生肉眼可见的增加。

举个栗子。

现在很多计算机都是双硬盘,一般人会把一个较小的ssd用作系统盘,把机械硬盘用作仓库盘,这样,当你在仓库盘做规模比较大的文件操作的时候(比如复制,解压),仓库盘的活动时间会保持在100%(因为一直有新的io请求),但是,你的没有在用仓库盘的程序一.点.也.不.卡,当然,这时候,如果你想打开仓库盘上的某个游戏,你会感受到来自机械硬盘的恶意——这是队列长度很长的情况:新的io请求无法及时得到响应。

还是上面的情况,但是这次复制的文件都是小文件而且目录结构复杂,导致文件管理器把很长的时间花在了读目录上,所以创建新io请求的速度被显著降低,同时这些小文件io完成得比较快,所以队列长度始终很小,但是磁盘活动时间依然是100%。这个时候你打开游戏,会发现几乎感觉不到磁盘在被使用——这是队列长度很短的情况:虽然使用率是100%,但是新的io请求依然能够很快得到响应。

有一种情况下,高磁盘使用伴随整个系统的高延迟,那就是交换分区/交换文件被大量使用的时候。操作系统频繁得在内存和pagefile之间复制内存页面,导致系统整体的延迟非常高。如果发生这种情况,那么意味着你需要增加内存。这也是不建议个人用户使用过大的pagefile的原因,因为大pagefile通常仅仅是用来防止系统因为可用内存不足而直接死掉的,但是个人用户可以承受系统直接死掉,因为并没有肉眼可见的后果。

当然,还有一种情况,是驱动bug,比如windows 10的某驱动。

那么怎么避免呢?

1.如果是大量文件操作导致磁盘活动时间过长进而影响到整个系统的响应时间,那么,减少文件操作,或者在进行大量文件操作的时候先干别的去。如果你能让操作系统把这些文件操作放到一个低优先级队列,也不错。这一点似乎通常是用一个低优先级进程一次提交一个io请求来实现的。

2.如果是pagefile问题,那么加内存,或者想办法减少内存使用,有人建议把ssd用作swap可以显著提高面临内存瓶颈的系统的响应性能,你可以尝试一下,但是这会影响ssd的寿命。

3.驱动/os的bug,那么找没bug的驱动,或者换硬盘(不换驱动就换硬盘嘛(逃)。

p.s.,因为调度算法不同,linux内核在高硬盘负载下,在响应时间方面比windows要好得多。