当前位置:   article > 正文

Linux系统查看内存使用情况_linux查看服务器内存

linux查看服务器内存

操作系统



一、 查看内存使用情况

在Linux系统中,大部分操作都通过命令行来完成,因为大部分情况下不开启图形界面。
在服务器环境,则只能通过shell执行操作。
下面介绍查看内存使用情况的相关命令。 包括物理内存(RAM)和交换内存(swap)。

我们经常需要检查服务器的内存使用情况,以及每个进程占用的内存,避免发生资源短缺进而影响用户体验。
对于网站和Web服务,必须具有足够的内存才能处理客户端请求。 如果内存不足,在请求高峰时就会变得缓慢,拥堵,甚至服务崩溃。
当然桌面系统也是同样的道理。

1. 使用 free 命令

free 命令是Linux系统中最简单和最常用的内存查看命令, 示例如下:

zz@xiaole:~$ free -m
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:       15659        8709         165        1477        6785        5144
交换:       15624        1344       14280
(xonnx) zz@xiaole:~$ free -h
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:        15Gi       8.5Gi       197Mi       1.4Gi       6.6Gi       5.1Gi
交换:        15Gi       1.3Gi        13Gi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

其中, -m 选项是以MB为单位来展示内存使用信息; -h 选项则是以人类(human)可读的单位来展示。

上面的示例中, Mem: 这一行:

total 表示总共有 7822MB 的物理内存(RAM),即7.6G。
used 表示物理内存的使用量,大约是 322M。
free 表示空闲内存;
shared 表示共享内存?;
buff/cache 表示缓存和缓冲内存量; Linux 系统会将很多东西缓存起来以提高性能,这部分内存可以在必要时进行释放,给其他程序使用。
available 表示可用内存;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出结果很容易理解。 Swap 这一行表示交换内存,从示例中的数字可以看到,基本上没使用到交换内存。

2. 查看 /proc/meminfo

另一种方法是读取 /proc/meminfo 文件。 我们知道, /proc 目录下都是虚拟文件,包含内核以及操作系统相关的动态信息。

zz@xiaole:~$ cat /proc/meminfo 
MemTotal:       16035748 kB
MemFree:          208956 kB
MemAvailable:    5314984 kB
Buffers:          494680 kB
Cached:          5616432 kB
SwapCached:        19092 kB
Active:          3896780 kB
Inactive:       10010360 kB
Active(anon):     992028 kB
Inactive(anon):  8279308 kB
Active(file):    2904752 kB
Inactive(file):  1731052 kB
Unevictable:      484872 kB
Mlocked:            2492 kB
SwapTotal:      15999996 kB
SwapFree:       14608892 kB
Dirty:             37508 kB
Writeback:             0 kB
AnonPages:       8269488 kB
Mapped:           827992 kB
Shmem:           1478876 kB
KReclaimable:     809792 kB
Slab:            1034028 kB
SReclaimable:     809792 kB
SUnreclaim:       224236 kB
KernelStack:       33056 kB
PageTables:        96408 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    24017868 kB
Committed_AS:   26950740 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      113240 kB
VmallocChunk:          0 kB
Percpu:             8896 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:     1494048 kB
DirectMap2M:    14925824 kB
DirectMap1G:     1048576 kB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

重点关注这些数据:

MemTotal, 总内存
MemFree, 空闲内存
MemAvailable, 可用内存
Buffers, 缓冲
Cached, 缓存
SwapTotal, 交换内存
SwapFree, 空闲交换内存
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

提供的信息和 free 命令看到的差不多。

3. 使用 vmstat 命令

使用 vmstat -s 命令和选项, 可以对内存使用情况进行统计, 类似于 /proc/meminfo。

示例如下:

zz@xiaole:~$ vmstat -s
     16035748 K total memory
      8925540 K used memory
      3833796 K active memory
     10021940 K inactive memory
       235024 K free memory
       495068 K buffer memory
      6380116 K swap cache
     15999996 K total swap
      1398784 K used swap
     14601212 K free swap
      1200660 non-nice user cpu ticks
         6440 nice user cpu ticks
       287555 system cpu ticks
     12629333 idle cpu ticks
      3373867 IO-wait cpu ticks
            0 IRQ cpu ticks
        57036 softirq cpu ticks
            0 stolen cpu ticks
     15916951 pages paged in
     70642617 pages paged out
        11714 pages swapped in
       358647 pages swapped out
    109474456 interrupts
    209512321 CPU context switches
   1687828473 boot time
       101087 forks
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

最前面的几行,显示了内存总量,使用量,以及空闲内存等信息。

4. 使用 top 命令

top 命令一般用于查看进程的CPU和内存使用情况;当然也会报告内存总量,以及内存使用情况,所以可用来监控物理内存的使用情况。
在输出信息的顶部展示了汇总信息。

示例输出:

zz@xiaole:~$ top

top - 15:25:25 up  6:10,  1 user,  load average: 2.73, 2.77, 2.53
任务: 429 total,   1 running, 422 sleeping,   0 stopped,   6 zombie
%Cpu(s):  1.8 us,  1.2 sy,  0.0 ni, 73.0 id, 23.8 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :  15659.9 total,    225.7 free,   8710.2 used,   6724.0 buff/cache
MiB Swap:  15625.0 total,  14259.0 free,   1366.0 used.   5183.1 avail Mem 
Renice PID 9586 to value 
 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

各种操作系统提供的参数略有不同,一般来说都可以根据CPU和内存来排序。

例如:

# CentOS
top -o %MEM
top -o %CPU

# mac
top -o mem
top -o cpu
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

碰到不清楚的,请使用 top -h 查看帮助信息。

重点关注顶部的 KiB Mem 和 KiB Swap 这两行。 表示内存的总量、使用量,以及可用量。
buffer 和 cache 部分,和 free 命令展示的差不多。

5. htop 命令

与 top 命令类似, 但 htop 还展示了其他的各种信息, 而且支持彩色显示。
在这里插入图片描述顶部的消息显示了CPU使用率, 以及RAM和交换内存的使用情况。

如果没安装,可以使用类似的命令:

yum install htop -y
  • 1

二、 查看物理内存信息

想要查看物理内存的硬件信息,可以使用 demidecode 命令。
这个命令会输出物理内存相关的信息。

zz@xiaole:~$ sudo dmidecode -t 17
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.2.0 present.

Handle 0x0002, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x0001
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8192 MB
	Form Factor: SODIMM
	Set: None
	Locator: Controller0-ChannelA-DIMM0
	Bank Locator: BANK 0
	Type: DDR4
	Type Detail: Synchronous
	Speed: 3200 MT/s
	Manufacturer: SK Hynix
	Serial Number: 22E2F3F7
	Asset Tag: None
	Part Number: HMAA1GS6CJR6N-XN    
	Rank: 1
	Configured Memory Speed: 3200 MT/s
	Minimum Voltage: Unknown
	Maximum Voltage: Unknown
	Configured Voltage: 1.2 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: Not Specified
	Module Manufacturer ID: Bank 1, Hex 0xAD
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 8 GB
	Cache Size: None
	Logical Size: None

Handle 0x0003, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x0001
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8192 MB
	Form Factor: SODIMM
	Set: None
	Locator: Controller1-ChannelA-DIMM0
	Bank Locator: BANK 0
	Type: DDR4
	Type Detail: Synchronous
	Speed: 3200 MT/s
	Manufacturer: SK Hynix
	Serial Number: 22E2F69D
	Asset Tag: None
	Part Number: HMAA1GS6CJR6N-XN    
	Rank: 1
	Configured Memory Speed: 3200 MT/s
	Minimum Voltage: Unknown
	Maximum Voltage: Unknown
	Configured Voltage: 1.2 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: Not Specified
	Module Manufacturer ID: Bank 1, Hex 0xAD
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 8 GB
	Cache Size: None
	Logical Size: None
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

dmidecode -t 17 展示的信息包括 内存大小, 类型,带宽等信息。 当然,因为示例中使用的是虚拟机,所以有的信息是不可用的。

如果不加 -t 参数,则展示所有类型的硬件信息。 也可以指定其他 -t 参数来查看对应的硬件信息。

小结

本文介绍的命令都可以在shell终端上执行,不需要图形界面来展示。
如果使用带有图形界面的Linux桌面系统,则使用图形工具会更直观。 一般来说图形桌面都会提供对应的系统监控工具。 输出容易理解的 cpu, 物理内存, 交换内存, 网络带宽等资源的使用信息。

参考链接

https://www.binarytides.com/linux-command-check-memory-usage/
http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage-on-linux.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/58990
推荐阅读
相关标签
  

闽ICP备14008679号