编辑 : 这是当 top 使用“M”运行时。 Eclipse 启动时的快照(使用“iotop”) Eclipse 构建工作区时的快照 Eclipse 完成其工作后
它和以前一样慢,让一切都停止了:(
我安装了 OpenSuse 11.4 64 位。早些时候,系统速度很快。现在 Eclipse 需要很长时间才能打开,然后需要 5 分钟才能构建工作区(不是开玩笑!)。以下是打开 eclipse 时系统顶部的外观:
Tasks: 181 total, 1 running, 180 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.3%us, 1.6%sy, 0.0%ni, 57.2%id, 35.8%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 8099348k total, 8046104k used, 53244k free, 46904k buffers
Swap: 2103292k total, 0k used, 2103292k free, 7055848k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1778 root 20 0 137m 19m 10m S 4 0.3 0:04.92 Xorg
1 root 20 0 12460 864 724 S 0 0.0 0:00.88 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:00.10 ksoftirqd/0
4 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/0:0
5 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/u:0
6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0
8 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1
9 root 20 0 0 0 0 S 0 0.0 0:00.44 kworker/1:0
10 root 20 0 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1
11 root 20 0 0 0 0 S 0 0.0 0:00.58 kworker/0:1
12 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/1
13 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/2
14 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/2:0
15 root 20 0 0 0 0 S 0 0.0 0:00.01 ksoftirqd/2
16 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/2
17 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/3
18 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/3:0
19 root 20 0 0 0 0 S 0 0.0 0:00.01 ksoftirqd/3
20 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/3
21 root 0 -20 0 0 0 S 0 0.0 0:00.00 cpuset
22 root 0 -20 0 0 0 S 0 0.0 0:00.00 khelper
23 root 0 -20 0 0 0 S 0 0.0 0:00.00 netns
24 root 20 0 0 0 0 S 0 0.0 0:00.00 sync_supers
25 root 20 0 0 0 0 S 0 0.0 0:00.00 bdi-default
26 root 0 -20 0 0 0 S 0 0.0 0:00.00 kintegrityd
27 root 0 -20 0 0 0 S 0 0.0 0:00.00 kblockd
28 root 0 -20 0 0 0 S 0 0.0 0:00.00 kacpid
29 root 0 -20 0 0 0 S 0 0.0 0:00.00 kacpi_notify
30 root 0 -20 0 0 0 S 0 0.0 0:00.00 kacpi_hotplug
31 root 0 -20 0 0 0 S 0 0.0 0:00.00 ata_sff
32 root 20 0 0 0 0 S 0 0.0 0:00.00 khubd
33 root 20 0 0 0 0 S 0 0.0 0:00.00 kseriod
34 root 0 -20 0 0 0 S 0 0.0 0:00.00 md
35 root 0 -20 0 0 0 S 0 0.0 0:00.00 kondemand
36 root 20 0 0 0 0 S 0 0.0 0:00.00 khungtaskd
37 root 20 0 0 0 0 S 0 0.0 0:01.15 kswapd0
38 root 25 5 0 0 0 S 0 0.0 0:00.00 ksmd
39 root 20 0 0 0 0 S 0 0.0 0:00.00 fsnotify_mark
40 root 0 -20 0 0 0 S 0 0.0 0:00.00 aio
41 root 0 -20 0 0 0 S 0 0.0 0:00.00 crypto
45 root 0 -20 0 0 0 S 0 0.0 0:00.00 kthrotld
我此时只有 Eclipse 正在运行,而 Eclipse 有自己的甜蜜时间:(,甚至浏览器也打不开。为什么系统在爬行?任何帮助都会很棒
谢谢。
答案1
您使用的内存过多。看看那行:
内存:总共 8099348k,已用 8046104k,空闲 53244k,
这是第一个线索。当您运行 top 然后按大写键时,第二条线索必须稍后出现M
。这将对进程进行排序,使占用内存的进程位于顶部。很可能这是一个存在内存泄漏的进程,但也可能是其他原因,例如您是否正在使用不断增长的数据库运行 SOLR?
iotop 可以很好地找出您正在执行的 IO 类型,但您很可能只会了解到它是一般磁盘 IO。如果您有更多 RAM,那么您将拥有更大的磁盘缓存,因此磁盘 IO 会更少。 Eclipse 完成它的工作后,top 向您显示什么?也许您加载了太多插件?
此外,free -mt
这是查看实际缓冲区高速缓存大小的更好方法。将会有一行看起来像这样:
-/+ buffers/cache: 3996 8475
这两个数字中的第二个是可用于应用程序可用的缓冲区缓存的 RAM 量。我给出的输出来自运行 SOLR 的服务器和另一个总 RAM 为 12G 的 Java Web 应用程序。
如果我处于您的位置,我会从 shell 提示符启动 Eclipse,以便您可以看到 stderr 日志消息,然后在 Eclipse 加载时top
使用该M
选项进行监视(或重复运行),以查看是否可以将 RAM 使用量的增加与free -mt
当时发生了什么。
此外,该行为可能是在启动时由其他东西完成的,可能是太多的 Apache mods 或类似的东西。您始终可以添加一个特殊的初始化脚本来在启动期间使用时间戳进行类似的内存监控。
答案2
我希望您已经在运行比 openSUSE 11.4 更新的版本,所以仅供参考:从 iotop 屏幕截图来看,缓慢很可能是由繁重的 I/O 进程(即preload
和 )引起的tracker-store
。虽然两者都应该有所帮助——两者都应该有所帮助,但在某些情况下它们会成为性能消耗者(而且从安全角度来看,将所有个人数据编入索引也不一定是一个好主意) 。