我遇到了一个奇怪的问题,dnf 速度极慢,以至于计算机在安装软件包时冻结了几秒钟。运行 Fedora 29,但这种情况已经发生多年了。否则电脑工作正常,不会死机,显然只有dnf碰到了一些弱点。不仅“dnf升级”需要一个小时才能完成100个软件包,每年当我升级Fedora时,我都会等待圣诞节假期,这样我就可以在周末没有电脑的情况下生活,因为3000多个软件包更新从周五晚上开始到周日结束。
根目录安装在旧的SSD磁盘上,/home安装在新的经典磁盘(WD Caviar Black)上,还有另一个磁盘仅用于备份(只是为了告诉安装了多个磁盘)。我怀疑旧的 SSD 行为不当,将根分区移动到经典磁盘之一,但它并没有改善情况(甚至更慢)。
Journalctl 或 dmesg 或 /var/log/messages 没有显示任何特殊内容。 Sysbench 表示,每个已安装磁盘的磁盘性能都很好,就像在另一台也运行 Fedora 29 且 dnf 很好的(较旧的)计算机上一样好(几分钟内升级,午餐期间每年发布升级)。
有谁知道在哪里寻找正在发生的事情吗?
PS top,iotop,iostat,dmesg,journalctl,这种基本的东西查了很多。 iotop 在执行升级时显示 python...(dnf)在磁盘上的活动为 99.99%,但我想这是正常的。甚至 sysbench(如上所述)也显示磁盘比另一台轻松执行 dnf 的计算机快一点。
对于品牌:i7-920 处理器,24 G RAM,无交换
答案1
罗伯特:了解哪个系统调用花费的时间最长会很有趣。
您可以使用 perf trace 安装一个简单(随机)包,然后排序以找到最长的调用吗?
例如: # perf trace -s -o /tmp/trace.out dnf install -y xorg-x11-apps-7.7-20.fc28.x86_64
然后发布 /tmp/trace.out 文件的内容。它是一个摘要文件,因此不应太大,但它将帮助您指出哪些系统调用花费的时间最长,以及它们是否超出正常范围。
答案2
我知道这个问题是很久以前的问题了,但我相信这个问题的原因(对我来说)可能是使用 SMR(单磁共振)驱动器,它的写入速度慢得离谱。以下是一些参考:
- https://arstechnica.com/gadgets/2020/04/caveat-emptor-smr-disks-are-being-submarined-into-unexpected-channels/
- https://superuser.com/questions/1691661/extreme-drops-in-hard-disk-performance
和一些供应商参考: