2019-02-27 内存命令free
在Linux执行free命令后的结果:
root@ubuntu:~# free
total used free shared buff/cache available
Mem: 16402708 864268 13393904 10352 2144536 15104364
Swap: 1046524 0 1046524
这个简单命令的背后包含很多操作系统的知识,要详细理解,需要查阅不少的资料:
包括:
cat /proc/meminfo
的明细解释
1)每一列的含义:
total:可用内存的总和
used: 进程实际占用的空间
free:纯空闲的内存空间
shared:共享内存空间
buffer/cache: cache空间
available:可用内存
total = used + free +buffer/cache
2) total为什么不是16G的完整大小?
Total是物理内存扣除了Kernel的代码段和一些保留位。在系统启动后,BootLoader将会加载Kernel到内存中,这部分内存是kernel专用的,不会再被进行分配。
3)available为何比free+buffer/cache之和要小?
available的定义是:
An estimate of how much memory is available for starting new
applications, without swapping. Calculated from MemFree,
SReclaimable, the size of the file LRU lists, and the low
watermarks in each zone.
是对可以作为启动新进程应用的一个评估。
可以将available作为1个评估。
4) 内存占用怎么计算?
一般:
percent = used / total * 100%
5) buffer/cache的作用?
buffer:Block cache
Cache:Page cache
二者在系统内存吃紧时,会被主动回收。
buffer:Relatively temporary storage for raw disk blocks shouldn't get tremendously large (20MB or so)
在Block内存管理中,表示raw disk,一般不会太大,主要起到缓冲作用。
Cache:in-memory cache for files read from the disk (the pagecache). Doesn't include SwapCached
Cache中是文件系统中的文件。一般比Buffer要大很多。
参考:
解决Linux buffer/cache占用高的方法:https://blog.csdn.net/ailice001/article/details/80353924
网友评论