1. 简介
内存是计算机中的临时存储器件,用于存储正在执行的程序和数据,对于系统的性能和稳定性至关重要。因此,了解和监控系统的内存状态对于调优和故障排除非常重要。本文将介绍如何使用Linux虚拟机来查看内存状态。
2. 查看内存使用情况
2.1 使用free命令
在Linux中,可以使用free命令查看系统的内存使用情况。该命令会列出内存的总量、已用量、可用量等信息。
free -h
执行以上命令后,会显示类似以下的输出:
total used free shared buff/cache available
Mem: 3.8G 1.9G 508M 72M 1.4G 1.6G
Swap: 4.0G 0B 4.0G
内存总量(Mem):系统中内存的总量。
已用内存(used):当前已使用的内存量。
可用内存(free):当前可用的内存量。
共享内存(shared):多个进程共享的内存量。
缓存和缓冲区(buff/cache):系统分配给缓存和缓冲区的内存量。
可用内存(available):系统预留的可用内存量。
2.2 使用top命令
除了free命令,还可以使用top命令来实时监控内存的使用情况。top命令会列出系统中运行的进程,并显示它们的内存使用情况。
top
执行以上命令后,会显示一个实时的系统监视器。在顶部的信息区域,可以找到有关内存的相关信息,如内存总量、已用量、可用量等。
KiB Mem : 3982708 total, 503056 free, 1800880 used, 1688160 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1477488 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2064 root 20 0 5002636 437240 61196 S 0.0 11.0 33:02.20 Xorg
%MEM:进程使用的内存百分比。
VIRT:进程使用的虚拟内存大小。
RES:进程实际使用的物理内存大小。
SHR:进程共享的内存大小。
3. 查看内存分配情况
3.1 使用/proc/meminfo文件
/proc/meminfo文件是一个虚拟文件,可以通过读取它来获取系统内存的详细信息。可以使用cat命令来查看该文件的内容。
cat /proc/meminfo
执行以上命令后,会显示类似以下的输出:
MemTotal: 3977856 kB
MemFree: 409832 kB
MemAvailable: 1395160 kB
Buffers: 226808 kB
Cached: 2240680 kB
SwapCached: 157832 kB
MemTotal:系统中内存的总量。
MemFree:当前可用的内存量。
MemAvailable:系统预留的可用内存量。
Buffers:用作块设备的缓冲区的内存量。
Cached:文件系统缓存的内存量。
SwapCached:交换分区缓存的内存量。
3.2 使用pmap命令
pmap命令用于显示进程的内存映射。可以通过指定进程ID来查看特定进程的内存分配情况。
pmap <PID>
执行以上命令后,会显示特定进程的内存分配情况。
<PID>: executable_file
00000056 4K r---- app.so
00000056 1000K rw--- app.so
显示的每一行表示该进程在内存中的一个映射区段。包括区段的起始地址、大小和权限。
4. 查看内存的使用趋势
4.1 使用vmstat命令
vmstat命令用于显示系统的虚拟内存状态和统计信息。可以通过指定时间间隔来查看内存使用的趋势。
vmstat <interval> <count>
执行以上命令后,会每隔指定的时间间隔显示一次内存使用情况,共显示指定的次数。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 5081152 434168 686040 0 0 0 8 234 43 2 1 96 1 0
swpd:交换分区(swap)使用的内存量。
free:可用内存量。
buff:块设备缓冲区使用的内存量。
cache:文件系统缓存的内存量。
si:从磁盘交换到内存的数据量。
so:从内存交换到磁盘的数据量。
bi:块设备读取的数据量。
bo:块设备写入的数据量。
us:CPU用户进程的时间比例。
sy:CPU系统进程的时间比例。
id:CPU空闲的时间比例。
wa:CPU等待I/O操作的时间比例。
st:虚拟化环境中被抢占的时间比例。
4.2 使用sar命令
sar命令用于收集和报告系统活动的数据,包括内存的使用情况。可以通过指定时间间隔来查看内存使用的趋势。
sar -r <interval> <count>
执行以上命令后,会每隔指定的时间间隔显示一次内存使用情况,共显示指定的次数。
09:00:01 AM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %committed kbactive kbinact kbdirty
09:10:01 AM 459804 1433650 1202536 30.26 100880 553052 693308 17.49 8571764 5425964 2080
kbmemfree:可用内存量。
kbmemused:已用内存量。
%memused:已用内存的百分比。
kbbuffers:块设备缓冲区使用的内存量。
kbcached:文件系统缓存的内存量。
kbcommit:已提交内存的量。
%committed:已提交内存的百分比。
kbactive:活动(不包括缓存)的内存量。
kbinact:不活跃的(包括缓存)的内存量。
kbdirty:脏内存(待刷新到磁盘)的大小。
5. 结论
通过使用Linux虚拟机上的命令,我们可以轻松地查看和监控系统的内存状态。这对于优化系统性能、排除故障以及进行资源规划非常有帮助。希望本文对您理解和使用这些命令有所帮助。