转 linux 服务器内存占用统计 linux 服务器内存占用统计

linux 服务器内存占用统计

 原文:
https://www.cnblogs.com/eaglediao/p/6641811.html

当前内存占用率的计算,是根据top命令显示的Mem.used除以Mem.total得到。

  1. Mem.total:表示总物理内存。
  2. Mem.used: 表示内核控制的内存数,除了应用程序使用的内存外,还包括缓存。

Mem.used =  应用程序使用内存  + Mem.buffers + Mem.cached

Linux的内存管理机制,会尽可能缓存一些数据,就算程序本身已经释放相关内存,Buffers/cached也不会立即释放。

但在需要的时候Buffers/cached都是可以被丢弃并快速回收的。

  1. 反过来,Mem.free:   表示还未纳入内核管理范围的内存(完全未被使用)。

有时候看上去可用内存很少,但实际还是比较充足的。从应用程序角度,buffers和cached也属于可用。

实际可用内存 = Mem.free + Mem.buffers + Mem.cached.

所以, 由于buffeds/cached机制,服务器在运行一段时间以后uesd内存的值越来越大。

基于此计算的内存占用率结果比实际偏高,而且还可能偏高很多。

举例,在服务器用vi打开文件,此时文件数据纳入缓存,内存占用随之增加。但这并不是应用程序占用的内存。

复制代码
linux139:/srv # free -m
             total       used       free     shared    buffers     cached
Mem:         19953       1133      18820          0         20         86
-/+ buffers/cache:       1025      18927
Swap:        16384          0      16384
linux139:/srv # vim test.log 
linux139:/srv # ll -sh test.log 
30M -rw------- 1 root root 30M Mar 29 11:24 test.log
linux139:/srv # free -m
             total       used       free     shared    buffers     cached
Mem:         19953       1162      18790          0         20        116
-/+ buffers/cache:       1025      18928
Swap:        16384          0      16384
lin # top
top - 11:25:34 up  3:49,  3 users,  load average: 0.21, 0.11, 0.09
Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:     19953M total,     1163M used,    18790M free,       20M buffers
Swap:    16384M total,        0M used,    16384M free,      116M cached
复制代码

手工清理缓存方式:

sync ;echo 3 > /proc/sys/vm/drop_caches

当前内存占用率的计算,是根据top命令显示的Mem.used除以Mem.total得到。

  1. Mem.total:表示总物理内存。
  2. Mem.used: 表示内核控制的内存数,除了应用程序使用的内存外,还包括缓存。

Mem.used =  应用程序使用内存  + Mem.buffers + Mem.cached

Linux的内存管理机制,会尽可能缓存一些数据,就算程序本身已经释放相关内存,Buffers/cached也不会立即释放。

但在需要的时候Buffers/cached都是可以被丢弃并快速回收的。

  1. 反过来,Mem.free:   表示还未纳入内核管理范围的内存(完全未被使用)。

有时候看上去可用内存很少,但实际还是比较充足的。从应用程序角度,buffers和cached也属于可用。

实际可用内存 = Mem.free + Mem.buffers + Mem.cached.

所以, 由于buffeds/cached机制,服务器在运行一段时间以后uesd内存的值越来越大。

基于此计算的内存占用率结果比实际偏高,而且还可能偏高很多。

举例,在服务器用vi打开文件,此时文件数据纳入缓存,内存占用随之增加。但这并不是应用程序占用的内存。

复制代码
linux139:/srv # free -m
             total       used       free     shared    buffers     cached
Mem:         19953       1133      18820          0         20         86
-/+ buffers/cache:       1025      18927
Swap:        16384          0      16384
linux139:/srv # vim test.log 
linux139:/srv # ll -sh test.log 
30M -rw------- 1 root root 30M Mar 29 11:24 test.log
linux139:/srv # free -m
             total       used       free     shared    buffers     cached
Mem:         19953       1162      18790          0         20        116
-/+ buffers/cache:       1025      18928
Swap:        16384          0      16384
lin # top
top - 11:25:34 up  3:49,  3 users,  load average: 0.21, 0.11, 0.09
Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:     19953M total,     1163M used,    18790M free,       20M buffers
Swap:    16384M total,        0M used,    16384M free,      116M cached
复制代码

手工清理缓存方式:

sync ;echo 3 > /proc/sys/vm/drop_caches

猜你喜欢

转载自www.cnblogs.com/python-xiakaibi/p/10398038.html