我的笔记本电脑正在运行 Debian 测试,但最近在执行涉及写入磁盘的操作时,速度非常缓慢。
我不知道问题出在哪里,希望得到一些帮助来追踪并修复它。
以下是我注意到的症状:
iotop
对于当前正在写入磁盘的任何进程(例如,,...),通常会在“磁盘写入”中显示非常接近 500KB/s 的cp
带宽dpkg
。- 无论 CPU 负载如何,都会发生这种情况。
- 运行 1 个
cp
进程会导致总写入带宽约为 500KB/s。运行 10 个cp
进程会导致总写入带宽约为 5MB/s。 - 这是 SSD 磁盘上 LVM 卷上的 ext4 文件系统。上一点强烈暗示限制不是来自硬件,但为了以防万一,我将系统克隆到另一个 SSD 并得到了相同的结果。
- 该问题不会影响全新启动后的机器,但似乎只会在一段时间后出现(这意味着在一些挂起到内存并唤醒之后,但我不知道是否相关)。
- 在构建 Emacs 时,速度减慢尤其明显,构建的其中一个阶段通过许多小
write
调用生成一个大约 7MB 的所谓“pdump 文件”,并且iotop
告诉我该过程最终总共执行了超过 400MB 的磁盘写入(速度为 500KB/s,因此写入这个可怜的 7MB 文件需要 10 多分钟)。这表明文件正在以非常精细的粒度进行“同步”,尽管我没有在源代码中看到任何可以证明这种行为的依据。 - 我尝试
fsck -f
在一次重启后进行检查,但并未发现任何问题。 dmesg
不包含来自 ext4 或 lvm 层或块设备层的任何异常消息。- 该问题影响我在 SSD 上使用的所有 3 个文件系统(所有 3 个文件系统都在同一 LVM 卷组中使用 ext4)。它不影响 tmpfs 挂载的 /tmp。
- 这台机器已经运行了最新的 Debian 测试,并且几个月来一直显示出这些迹象,使用了各种内核(现在正在运行
5.2.0-2-686-pae
,不确定我看到此问题的第一个内核版本是什么)。
根据要求,这里有一些额外的信息。
% df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 3.9G 0 3.9G 0% /dev
tmpfs 796M 26M 770M 4% /run
/dev/mapper/Alfajor-root 19G 16G 2.3G 88% /
tmpfs 3.9G 30M 3.9G 1% /dev/shm
tmpfs 5.0M 8.0K 5.0M 1% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 512M 8.0K 512M 1% /tmp
/dev/mapper/Alfajor-cache 7.8G 6.7G 1.1G 87% /var/cache
/dev/mapper/Alfajor-home 41G 37G 1.8G 96% /home
tmpfs 796M 12K 796M 1% /run/user/122
% free -m
total used free shared buff/cache available
Mem: 7952 1188 2724 212 4039 5858
Swap: 4095 213 3882
% uname -a
Linux alfajor 5.3.0-3-686-pae #1 SMP Debian 5.3.15-1 (2019-12-07) i686 GNU/Linux
%
答案1
我仍然不完全确定问题出在哪里,但我将内核从 切换i686-pae
到amd64
,这似乎已经解决了问题(我的系统其余部分仍在运行 Debian 的 i386 端口)。我怀疑这与内核对 PAE 内存的管理问题有关(可能是因为某些缓冲区需要在 RAM 的前 2GB 或 4GB 内才能访问)。