内存 使用Linux虚拟机查看内存状态

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虚拟机上的命令,我们可以轻松地查看和监控系统的内存状态。这对于优化系统性能、排除故障以及进行资源规划非常有帮助。希望本文对您理解和使用这些命令有所帮助。

操作系统标签