我最近在配备 i7-6820HQ、32GB 内存和 512GB 美光 1100 SSD 的联想 T460p 上安装了 Ubuntu 16.04 LTS(内核 4.8.0-52)。我在安装过程中检查了全盘加密框并使用了默认的分区布局。总的来说,性能很棒。
然而,随着时间的推移,我的构建开始运行大约需要两倍的时间。此外,在写入大文件的构建部分期间,任何需要磁盘 I/O 的(非构建)任务最终都会等待很多。这包括启动新程序、在 Firefox 中加载页面等。例如,在 Firefox 中,我可以导航 UI、切换选项卡,一切都很好。但是如果我点击一个链接,整个 UI 就会锁定,直到事情平静下来。
所以总而言之,经过一段时间后,构建突然需要更长的时间,并且在构建过程中的某些时间点计算机基本上无法使用。
我该怎么做才能尝试诊断或解决此问题?
不要经常重启,所以在我遇到这个问题之前系统通常会运行几天。一旦我击中它,我就试图找出问题所在,然后重新启动以便我可以继续工作。
解决问题的唯一方法是重新启动机器。我已经尝试退出所有应用程序,注销并重新登录,并删除缓冲区缓存(连枷理论,因为它使用内存空间磁盘同步发生得更频繁),但只有重新启动才有效。
从长远来看,我尝试了这个答案的解决方案,但行为没有变化。
每当我遇到问题时,运行都会iotop显示dmcrypt_write使用 99% I/O的线程。当我没有遇到这个问题时,我也会看到dmcrypt_write以相对较高的 IO % 弹出到顶部,但它不会在那里停留很长时间。
如果我dd if=/dev/urandom of=$HOME/bigfile bs=10k count=200k; sync在一切正常运行时运行,dmcrypt_write会跳到顶部一两秒钟,但它的持续时间与我的一个构建过程中的持续时间相差甚远。
完整构建会生成大约 1.4 GB 的数据。这是一个包含多个模块的 Java 项目。因此,创建了许多小文件以及聚合所有这些小文件的一些较大的 JAR 文件。
总是有足够的内存可用,并且没有使用交换分区。
我有使用类似计算机 (T460p) 的同事也运行 Ubuntu,但没有遇到此问题。不过,它们似乎都有不同的SSD 品牌/型号。
这个问题再次浮出水面,所以我根据对这个问题的回复做了更多的测试。
discard选项,所以我fstrim …