我的笔记本电脑的性能有问题。事实上,我最近需要安装很多东西,有时整个机器会完全冻结。
首先是一些一般信息:我目前正在运行内核版本为 4.19.11-arch1-1-ARCH 的 Archlinux。该机器拥有 8GB RAM 和两个内部磁盘:一个旋转磁盘和一个 SSD。
现在,我需要访问旋转磁盘上的一些数据。 (我在这里写的所有内容仅指旋转的。SSD没有经过测试。)我发现,当通过网络从磁盘复制数据时,主机系统几乎冻结。这意味着图形界面没有响应,我必须等待进程终止才能再次访问我的计算机。鼠标不再在屏幕上移动,键盘敲击延迟了半分钟以上。
终止后,我对磁盘做了一些测试,发现即使是简单的
ionice -c idle dd if=/dev/sda of=/dev/null bs=1M count=1000 status=progress
造成了这个问题。与网络无关。进一步的调查(查看top
、uptime
等free
)得出以下结果:
- 没有进行大规模交换。
- 除了 1-2 个核心处于 IO 等待状态外,CPU 大部分时间都处于空闲状态。 (8 核系统中为 20-30%)
- 有足够的 RAM 可供使用
- 负载平均值(由 报告的待处理进程数
uptime
)跳至超过 13 的高值并保持该值(即使运行时间较长的平均值也会收敛到这些高值)。 - 一旦IO操作中断,机器很快就会再次响应,负载降至2-4以下。
我尝试在互联网上查找一些信息。那里没有发现太多东西。我只找到了查看当前IO调度器的提示。默认情况下mq-deadline
,所有磁盘均设置为。
我尝试了其他方法,似乎bfq
效果最好,因为整个问题使用它是最不重要的。它并没有完全消失。我认为,由于类别的原因ionice
,idle
对整体系统性能的影响应该可以忽略不计。实际上,系统保持响应,但有明显的一秒的滞后。比以前更好但并不完美。
最近对虚拟机磁盘的格式化导致主机系统完全锁定。我不得不艰难地重新开始。bfq
至少使用允许格式化的虚拟磁盘。
由于机器不再有任何响应,我没有从 获得任何信息dmesg
。我不知道幕后是否发生了什么疯狂的事情。我需要找出这个问题。我在互联网上发现有人假设内核中存在错误。我不知道这是否是真的。我还能做什么?