您如何找出哪个程序使用了过多的内存?


59

Ubuntu最近在我身上崩溃了。我认为是因为它的内存不足,所以我运行了free -m命令,发现我的内存使用率确实很高。因此,我跑去top寻找罪魁祸首,但显示的进程使用的内存不足1.5%。我怎么知道哪个程序使ubuntu崩溃/内存不足?以下是输出:

shafee@shafee-pc:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          3824       3714        110          0        978       1954
-/+ buffers/cache:        780       3044
Swap:           99          0         99

shafee@shafee-pc:~$ top
top - 02:12:14 up  1:24,  2 users,  load average: 0.16, 0.42, 1.49
Tasks: 182 total,   1 running, 181 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.9%us,  1.9%sy,  0.3%ni, 79.3%id, 15.5%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   3916708k total,  3803848k used,   112860k free,  1002308k buffers
Swap:   102396k total,        0k used,   102396k free,  2001852k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 4200 root      20   0  289m  53m  38m S    2  1.4   1:06.45 Xorg               
 5590 shafee    20   0 19348 1368  956 R    2  0.0   0:00.01 top                
    1 root      20   0 24124 2136 1264 S    0  0.1   0:02.05 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:24.23 ksoftirqd/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 migration/1        
    9 root      20   0     0    0    0 S    0  0.0   0:00.11 ksoftirqd/1        
   11 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/2        
   13 root      20   0     0    0    0 S    0  0.0   0:03.89 ksoftirqd/2        
   14 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/3        
   16 root      20   0     0    0    0 S    0  0.0   0:00.16 ksoftirqd/3        
   17 root       0 -20     0    0    0 S    0  0.0   0:00.00 cpuset             
   18 root       0 -20     0    0    0 S    0  0.0   0:00.00 khelper            
   19 root       0 -20     0    0    0 S    0  0.0   0:00.00 netns              
   21 root      20   0     0    0    0 S    0  0.0   0:00.01 sync_supers        
shafee@shafee-pc:~$

还是有110mb的空闲内存是正常的,我的问题是否与其他问题有关?


看来您也没有足够的交换空间。推荐的大小大约是RAM大小的两倍
Marco Ceppi

Answers:


74

您正在free错误地读取输出。Linux内核会执行很多自己的内存管理,从而分配超出其实际需要的资源-因此,您真正的“可用内存”量3044位于该+/- Buffers/cache行的“可用”列中,因此实际只消耗了780 MB。

默认情况下,top将根据CPU消耗进行排序。您可以按Shift+ M以消耗的内存百分比排序-使您可以更好地了解正在使用哪些软件分配给内核的内存。


free -m
             total       used       free     shared    buffers     cached
Mem:          7873       3916       3956          0        231       1117
-/+ buffers/cache:       2567       5305
Swap:        12401          0      12401

并在顶部对内存进行排序:

top - 17:05:18 up 2 days,  1:40,  4 users,  load average: 0.21, 0.14, 0.11
Tasks: 237 total,   1 running, 234 sleeping,   0 stopped,   2 zombie
Cpu(s):  1.6%us,  0.8%sy,  0.1%ni, 96.7%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8062420k total,  4013632k used,  4048788k free,   237204k buffers
Swap: 12699644k total,      292k used, 12699352k free,  1144752k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                          
 1632 root      20   0  884m 240m 6532 S    0  3.1   1:20.17 java                                                                                                                                                                             
 3911 marco     20   0 1011m 165m  22m S    0  2.1   9:20.62 chrome                                                                                                                                                                           
 3852 marco     20   0  770m 162m  45m S    0  2.1  14:59.59 chrome                                                                                                                                                                           
 1091 root      20   0  491m 160m 118m S    3  2.0  29:19.44 Xorg                                                                                                                                                                             
 1747 marco     20   0  659m 108m  34m S    1  1.4  18:43.92 compiz                                                                                                                                                                           
 3964 marco     20   0 1113m  99m  21m S    0  1.3  18:51.88 chrome                                                                                                                                                                           
 1759 marco     20   0  668m  94m  21m S    0  1.2   2:27.42 nautilus                                                                                                                                                                         
 3046 marco     20   0  788m  86m  26m S    0  1.1   1:22.96 evolution                                                                                                                                                                        
 1793 marco     20   0  647m  85m  18m S    0  1.1   0:12.74 shutter                                                                                                                                                                          
 1791 marco     20   0  404m  85m  13m S    0  1.1   5:19.51 bitcoin                                                                                                                                                                          
 2938 marco     20   0  809m  78m  31m S    0  1.0   1:01.07 empathy                                                                                                                                                                          
 9630 marco     20   0  265m  73m  19m S    1  0.9  12:41.52 skype                                                                                                                                                                            
 9618 marco     20   0  914m  64m  21m S    0  0.8   1:14.04 chrome                                                                                                                                                                           
 1777 marco     20   0  432m  64m  14m S    0  0.8   1:45.96 pastie

最后,为了帮助您诊断实际的软件是什么,请尝试将-c标志传递到顶部:top -c这样将为您提供运行命令的完整路径,名称和参数。


谢谢:/看来我的当机与其他情况有关。
shxfee

1
@Shafee然后,您可能想打开一个新问题,概述崩溃的原因并提供任何相关的日志文件或详细信息,以查看我们是否可以帮助您解决这些崩溃。
Marco Ceppi

1
哇。再次学到了新的东西。。。
andybleaden



3

您可以启动gnome-system-monitor应用程序。最好找出哪些应用程序使用了多少ram,还使用了多少cpu。您可以更改进程的优先级以使其运行得更快,例如,如果您要转换视频等。


1
ec2在cmd行上没有gnome-system-monitor,是否有替代方法?
Siddharth 2012年

3
您可以使用@Siddharth,htop它是top的更好版本。点击F6以按CPU或RAM使用率排序。
rosch 2012年

@Siddharth,您仍然可以在没有GUI的系统上安装gnome-system-monitor(尽管会安装很多依赖项)。然后,只要您具有Linux客户端,就可以通过X转发运行它。
克里斯·杰斯

1

Kubuntu中,我只按Ctrl- Esc,然后使用感兴趣的字段对事物进行排序:内存,CPU,...

在此处输入图片说明


0

这是一个很好的问题,但是信息显示有很多可用的内存。但是,您应该监视内存使用情况。

我最喜欢的系统监视器conky是其中的一部分,并且内存显示是其中的一部分:

Conky.gif

总内存行显示正在使用7.4 GiB中的2.5 GiB。

详细的内存行显示:

  • Web Content正在使用7%的内存。这是Firefox子程序。
  • Firefox 本身正在使用7%的内存
  • ffmpeg正在使用3%的内存。这是.gif录制器,peek正在制作我们正在观看的视频。

Conky具有高度可配置性,每个人的桌面看起来都不同。您可以谷歌搜索conky并获得78.7万次点击。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.