Ubuntu 12.04 在笔记本电脑上运行内存/CPU 密集型进程时会冻结

Ubuntu 12.04 在笔记本电脑上运行内存/CPU 密集型进程时会冻结

我有一台 Dell Precision M4500 笔记本电脑,配备 4GB RAM 内存和 Ubuntu 12.04 64 位,并安装了 8GB 交换内存。启动常用的 Java 开发环境(Eclipse、MySQL Server、SQuirreL、Chrome 中的几个选项卡、Skype 和 Tomcat,在开发模式下部署了相对较小的 GWT webapp)后,剩余大约 100 MB 的可用内存(free -m输出如下):

             total       used       free     shared    buffers     cached
Mem:          3944       3812        131          0         35        579
-/+ buffers/cache:       3197        746
Swap:         8787        422       8365

按 RES 内存排序运行top显示以下内容:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16509 yura      20   0 2540m 593m  13m S    0 15.1   1:45.25 java
10727 yura      20   0 5290m 441m  20m S    0 11.2  11:16.87 java
15886 yura      20   0 4324m 365m  10m S    0  9.3   2:37.32 java
19666 yura      20   0 3030m 292m  29m S    0  7.4   0:12.25 java
 4363 root      20   0  307m 180m  44m S    5  4.6  72:57.08 Xorg
 4905 yura      20   0  557m 162m  28m S    3  4.1  39:02.73 skype
 2403 mysql     20   0 1531m 151m 3296 S    0  3.8   2:06.37 mysqld
 5717 yura      20   0  974m 133m  26m S    1  3.4  18:14.44 chrome
11957 yura      20   0  978m 106m  14m S    0  2.7   1:04.37 chrome
 5771 yura      20   0  994m  96m  20m S    0  2.5   5:20.52 chrome
18599 yura      30  10  650m  91m  51m S    0  2.3   0:04.78 update-manager
 5980 yura      20   0 1285m  68m 9.9m S    3  1.7  21:16.95 chrome
19600 yura      20   0  919m  58m  21m S    0  1.5   0:02.08 chrome
19608 yura      20   0  914m  54m  21m S    0  1.4   0:12.11 chrome
16546 yura      20   0  916m  53m  20m S    0  1.4   0:34.79 chrome
16654 yura      20   0  930m  50m  21m S    0  1.3   0:01.61 chrome
 4597 yura      20   0 1083m  48m  20m S    2  1.2   6:53.28 unity-2d-shell
 5922 yura      20   0  443m  45m  25m S    0  1.2   1:00.64 chrome
 8501 yura      20   0  631m  42m  16m S    0  1.1   0:08.44 unity-2d-spread
 5820 yura      20   0  909m  34m  12m S    0  0.9   0:02.54 chrome
 5762 yura      20   0  903m  33m  10m S    0  0.9   0:07.36 chrome
 5889 yura      20   0  336m  28m 5124 S    0  0.7   1:56.02 chrome
 4688 yura      20   0  327m  27m 5124 S    0  0.7   8:21.67 gnome-screensav
 4617 yura      20   0  954m  24m 6728 S    0  0.6   0:12.13 nautilus
 4743 yura      20   0  523m  22m 7408 S    1  0.6   6:41.10 unity-panel-ser
 4895 yura      20   0  478m  18m 5300 S    0  0.5   0:03.86 webilder_unity_
 5927 yura      20   0  323m  15m  380 S    0  0.4   0:00.00 chrome
 4596 yura      20   0  634m  15m 9076 S    0  0.4  18:49.60 unity-2d-panel
 4624 yura      20   0  544m  12m 7208 S    1  0.3   0:06.38 python
 5727 yura      20   0  315m  12m 2788 S    0  0.3   0:00.26 chrome
 4575 yura      20   0  905m  12m 6768 S    0  0.3   0:19.45 gnome-settings-
 4613 yura      20   0  493m  10m 6156 S    0  0.3   0:15.71 nm-applet
 5732 yura      20   0  331m  10m  592 S    0  0.3   0:00.26 chrome
 4819 yura      20   0  358m  10m 2328 S    0  0.3   0:00.52 unity-lens-vide
 4876 yura      20   0  540m 9636 4420 S    0  0.2   0:02.83 unity-scope-vid

现在,拥有 100 MB 的可用内存对我来说已经很好了,因为一切都运行良好。

问题出现了,当我运行mvn clean install仅开始构建 GWT 应用程序的命令时:如果我通过关闭一些 Chrome 选项卡留下大约 800 MB 的可用内存,则在开发模式下运行的 SQuirreL 和 GWT webappmvn clean install运行良好,尽管消耗了几乎所有可用的 800 MB 内存然后释放它。

但是,如果我不关闭上述应用程序(Chrome 选项卡、SQuirrel,让 GWT 应用程序在开发模式下运行),从而留下大约 100 MB 的可用内存,整个 Ubuntu 系统在构建过程中就会冻结。我尝试等待几分钟,但没有任何变化。

有人能告诉我是什么原因导致整个 Ubuntu 系统冻结吗?这很容易重现,所以我可以运行任何命令或检查,所以任何建议都会受到赞赏。

此外,有趣的是,每次 Ubuntu 在相同的构建步骤中都会冻结mvn clean install。但我不知道为什么 Ubuntu 会在此期间冻结,因为这个构建步骤应该会消耗更多内存并使用更多 CPU。

提前致谢!

==================================== 编辑 =====================================

好的,今天我发现它实际上在一段时间后解冻了。我留下了 800 MB 的空闲空间,启动了构建过程,它冻结了,大约 7 分钟后解冻并成功完成构建过程。不过,等待 7 分钟是相当不可接受的,我不太明白为什么一个进程(构建过程)在内存不足的情况下会阻止其他进程(Chrome 选项卡、鼠标移动等)。除了升级到更多 RAM 之外还有其他选择吗?

==================================== 编辑 #2 =====================================

根据@terdon的建议,我在正常运行期间和冻结之前的构建过程中测量了CPU温度。 结果如下:

普通手术:

Adapter: ISA adapter
Core 0:       +57.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:       +57.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:       +59.0°C  (high = +84.0°C, crit = +100.0°C)
Core 3:       +57.0°C  (high = +84.0°C, crit = +100.0°C)

冻结之前:

Adapter: ISA adapter
Core 0:       +74.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:       +75.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:       +76.0°C  (high = +84.0°C, crit = +100.0°C)
Core 3:       +77.0°C  (high = +84.0°C, crit = +100.0°C)

所以,在我看来,这不是由于过热造成的,因为它只是稍微上升了一点,但甚至没有越过high障碍。所以,在我看来,这更像是内存问题……

相关内容