Answers:
我建议结合以前的答案
watch -n 5 free -m
请注意,Linux喜欢使用任何额外的内存来缓存硬盘驱动器块。因此,您不想只看免费Mem
。您要查看free
该-/+ buffers/cache:
行的列。这显示了应用程序可用的内存量。所以我就跑了free -m
,得到了这个:
total used free shared buffers cached
Mem: 3699 2896 802 0 247 1120
-/+ buffers/cache: 1528 2170
Swap: 1905 62 1843
我知道我正在使用1528 MB并有2170 MB的可用空间。
注意:要停止此watch
循环,只需按Ctrl+即可C。
Mem: used
是您已使用的总内存。-/+ buffers/cache: used
是您的总已用内存减去缓冲区和缓存。我知道输出看起来很有趣,但是这里不需要算术运算。您只是在-/ +缓冲区/高速缓存行中查找使用/免费。
free -h
,例如watch -n 5 free -h
,获取“人类可读”的输出,例如,2.1G
而不是2170
在输出中。
我认为htop
是最好的解决方案。
sudo apt-get install htop
这样,您将注意到哪些程序正在使用最多的RAM。如果需要,您可以轻松终止一个。这是屏幕截图!
htop
很好,因为它比更具“图形性”,而且可能更易于阅读free
。
RES
该应用程序使用的内存是否以MB为单位?这是SHR
什么?
htop
显示“一段时间内的内存使用情况”?
如果你在寻找每个正在运行的进程使用的内存的一个很好的细分,那么我会推荐检查出ps_mem.py(发现这里的pixelbeat.org)。
我在上面的评论中知道,您提到想要从free获得单行快照,但我认为其他人可能会觉得有用。
输出示例:
user@system:~$ sudo ps_mem.py
[sudo] password for user:
Private + Shared = RAM used Program
4.0 KiB + 7.5 KiB = 11.5 KiB logger
4.0 KiB + 8.0 KiB = 12.0 KiB mysqld_safe
4.0 KiB + 10.0 KiB = 14.0 KiB getty
4.0 KiB + 42.0 KiB = 46.0 KiB saslauthd (5)
48.0 KiB + 13.0 KiB = 61.0 KiB init
56.0 KiB + 27.5 KiB = 83.5 KiB memcached
84.0 KiB + 26.5 KiB = 110.5 KiB cron
120.0 KiB + 50.0 KiB = 170.0 KiB master
204.0 KiB + 107.5 KiB = 311.5 KiB qmgr
396.0 KiB + 94.0 KiB = 490.0 KiB tlsmgr
460.0 KiB + 65.0 KiB = 525.0 KiB rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB sudo
476.0 KiB + 83.0 KiB = 559.0 KiB monit
568.0 KiB + 60.0 KiB = 628.0 KiB freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB pickup
1.1 MiB + 80.0 KiB = 1.2 MiB bash
1.4 MiB + 308.5 KiB = 1.7 MiB fail2ban-server
888.0 KiB + 1.0 MiB = 1.9 MiB sshd (3)
1.9 MiB + 32.5 KiB = 1.9 MiB munin-node
13.1 MiB + 86.0 KiB = 13.2 MiB mysqld
147.4 MiB + 36.5 MiB = 183.9 MiB apache2 (7)
---------------------------------
208.1 MiB
=================================
Private + Shared = RAM used Program
我唯一不喜欢的部分是该脚本声称需要root特权。我还没有机会确切地知道为什么会这样。
pip install ps_mem
)和GitHub上使用。
使用free命令。例如,这是输出free -m
:
total used free shared buffers cached
Mem: 2012 1666 345 0 101 616
-/+ buffers/cache: 947 1064
Swap: 7624 0 7624
free -m | grep /+
将仅返回第二行:
-/+ buffers/cache: 947 1064
947
是内存使用量减去用于缓冲区和缓存的内存吗?
该手表命令可能是有用的。尝试watch -n 5 free
每五秒钟更新一次,以监视内存使用情况。
您可以使用来做cat /proc/meminfo
。
MemTotal: 4039160 kB
MemFree: 309796 kB
MemAvailable: 3001052 kB
Buffers: 345636 kB
Cached: 2341288 kB
SwapCached: 8 kB
Active: 1725160 kB
Inactive: 1551652 kB
Active(anon): 538404 kB
Inactive(anon): 70076 kB
Active(file): 1186756 kB
Inactive(file): 1481576 kB
Unevictable: 32 kB
Mlocked: 32 kB
SwapTotal: 4194300 kB
SwapFree: 4194044 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 589988 kB
Mapped: 255972 kB
Shmem: 18596 kB
Slab: 374888 kB
SReclaimable: 310496 kB
SUnreclaim: 64392 kB
KernelStack: 6976 kB
PageTables: 26452 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6213880 kB
Committed_AS: 3589736 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 147392 kB
DirectMap2M: 4046848 kB
watch cat /proc/meminfo
free
命令从中获取信息/proc/meminfo
并以紧凑的方式呈现它们。使用free -h
人类可读的输出。
监视内存使用情况
我更符合前面提到的Cacti是监视内存使用情况的一种好方法的文章之一。但是,由于仙人掌似乎不再是主流,因此有一种名为Graphite的替代绘图应用程序。
Graphite相对容易安装在ubuntu服务器上,并且要安装它,您可以查看此链接以获得易于遵循的安装过程。
在安装了石墨之后,现在,您可以按希望的任何时间间隔向其发送内存指标。每5秒,每分钟,每小时...等等。
如前所述,要绘制内存指标图,您可以使用系统工具编写您自己的脚本来收集必要的内存信息。或者,您可以使用预写的snmp插件来为您完成所有工作。
如果要编写自己的内存脚本,明智的做法是确保在计算使用的内存时考虑缓冲和缓存的内存,否则,最终将收集错误的数据。
如果您希望使用已经为您完成所有必要计算的snmp插件,则可以通过以下链接找到运行良好的插件:checkMemoryviaSNMP。
SNMP的优点:
我在监视的所有远程节点上都安装了snmp。这使我可以从一个中央服务器监视我的所有系统,而不必复制或在远程节点上放置插件。
SNMP的缺点:
您必须确保要在其上监视内存的每个远程节点上都安装了snmp代理。但是,此安装将是一次性的。如果您在环境中使用厨师或木偶之类的自动化工具或类似工具,那么这根本不是问题。
SNMP代理在远程节点上的配置:
安装snmp代理后,只需在/etc/snmpd/snmpd.conf文件中添加以下行:
rocommunity (specify-a-community-string-aka-password-here)
然后使用以下命令重新启动snmpd代理:
/etc/init.d/snmpd restart
然后,在您的中央服务器上(而不是从其监视所有其他服务器),可以运行以下命令:
$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ]. System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].
real 0m0.23s
user 0m0.03s
sys 0m0.02s
2896
,然后1528
在缓冲区上,这是否意味着您正在使用2896 + 1528
?