此应用程序使用多少RAM?


10

如果我运行top -chtop获取具有其内存消耗量的进程,但这不是我想要看到的。

是否有命令行可以查看给定应用程序的RAM消耗?

例如,我想查看Apache Web服务器的RAM消耗(而不是通过检查运行的所有进程来查看)

ram 


谢谢。我能找到的最好的方法是按进程进行的内存消耗,top -c已经给我了这件事

Answers:


4

这里有一个很好的详细说明:https : //blogs.kde.org/2005/09/15/measuring-memory-usage

但本质上:您必须真正深入并了解如何设置应用程序。

因此,例如,查看mysql:

  PID  PPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                    
 6004 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:40.33 mysqld                                                                                                                                            
16115 16085 composit  20   0 37900  27m 2908 S    0  0.2   0:00.37 mysqld                                                                                                                                            
16116 16115 composit  20   0 37900  27m 2908 S    0  0.2   2:07.34 mysqld                                                                                                                                            
16117 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.00 mysqld                                                                                                                                            
16118 16116 composit  20   0 37900  27m 2908 S    0  0.2   3:19.79 mysqld                                                                                                                                            
16119 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.01 mysqld                                                                                                                                            
16120 16116 composit  20   0 37900  27m 2908 S    0  0.2   5:31.09 mysqld                                                                                                                                            
16121 16116 composit  20   0 37900  27m 2908 S    0  0.2  14:19.53 mysqld                                                                                                                                            
16122 16116 composit  20   0 37900  27m 2908 S    0  0.2  36:13.67 mysqld                                                                                                                                            
16123 16116 composit  20   0 37900  27m 2908 S    0  0.2  30:30.64 mysqld                                                                                                                                            
16124 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.15 mysqld                                                                                                                                            
16493 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.00 mysqld    

使用的总内存约为25 MB(取27 MB RES并减去共享(SHR))

我通过在发出“ killall mysqld”之前和之后检查总内存使用情况(免费的-m,+ /缓冲区/缓存)来验证这一点。杀死所有mysqld进程后,根据“ free -m”,内存使用减少了25 MB。

如果您看到每个进程具有相同的VIRT,RES和SHR列,则它们很可能只是同一进程的线程。(较早的Linux库通过产生实质上占用相同内存的多个实际进程来处理线程)

如果它们不同,则可以通过对(RES-SHR)求和来估计它。但这仅在进程实际上是单独的进程而不仅仅是同一个进程的线程的情况下才有效。查看PPID(父进程ID)也有帮助。如果它们都具有相同的父代,则它们可能只是线程(尽管不一定)。

不幸的是,在Linux中没有真正好的简单方法来回答这个问题。唯一简单的方法是在终止过程之前立即检查“免费”,并在之后立即再次检查。查看“-/ + buffers / cache:”行,并查看减少了多少内存使用量,这将告诉您使用了多少内存。


2

有了一点帮助man ps这个很好的答案 ...

ps -up $(pidof PROCESS_NAME)

例如:

[wilf@comp ~]$ ps -up $(pidof firefox)
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
wilf      1619  8.9  5.6 1464216 342396 ?      Sl   17:56   1:36 /usr/lib64/firefox/firefox
[wilf@comp ~]$ 

其他方法:

cat /proc/$(pidof firefox)/status | grep VmSize

可以在没有-x和的情况下运行tail -1

pmap -x $(pidof firefox) | tail -1

仅显示百分比:

top -p $(pidof firefox)

另外,在使用时,top您可以按一下i以忽略空闲/僵尸进程,以使其更易于阅读: 顶部输出小得多


但是一个应用程序启动了多个进程,我怎么知道哪个是主要进程?

猜测?我认为pmap显示了关于PID正在使用的资源的很多信息。根据设在进程的名称信息和PID利用它发现pidof,因此,如果任何名义您提供所示的主处理(我想,不知道是否是指回父进程)
维尔夫

2
这按过程将输出分开。这样一来,您将无法获得所有Apache进程使用的内存总量。您需要进行总结,但是只对共享区域计数一次(这是困难的一点)。
吉尔斯(Gilles)'“ SO-不要邪恶”
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.