linux内存管理

1 物理内存与虚拟内存

(1)大家知道直接从物理内存读取数据比从硬盘上面读写数据会快很多,但是内存是有限的,这样就引出了虚拟内存。

(2)linux的内存管理采用的是分页的模式。为了保证物理内存的充分利用,内核会在适当的时候将物理内存不经常使用的数据块交换到虚拟内存中。(最近最经常算法 ,好通俗的名字,。。。。。)

2 内存的监控

(1)free命令

total:物理内存总大小

used:已经使用的物理内存大小

free:可用物理内存

shared:多个内存共享内存值

buffers:磁盘缓存的大小

第二行中mem:物理内存的使用情况

第三行cache:代表磁盘缓存的使用状态

第四行swap:交换空间内存使用状态

(2)从内核的角度查看内存的状态

 从上面的图可以看出物理内存为197G,可用内存136G,但是总物理内存减去已经使用的35=162G.这里并不包含处于缓冲区和缓存状态的内存大小。linux会在需要内存的时候,将缓冲区和缓存状态的内存变换为可用状态的neicun

(3)缓冲区与缓存的异同

缓冲区主要用来存放目录里面是什么内容,文件的属性等。而缓存直接用来记忆我们打开过的文件和程序。

一般如果大量的数据需要从磁盘读取到内存或者相反的行为,都是非常的消耗时间和资源。这个时候就引入了缓冲区和缓存的机制。他们相同在于都是内存操作。

3 查看进程占用内存

这里通常可以使用shell脚本或者python脚本来实现自动检测啦,当然如果需要远程监控多台服务器,可以使用python的paramiko模块,后面会写。。。。。。。

这一个是网上的shell,可以看看https://blog.csdn.net/keheinash/article/details/50641090

好了,欢迎留言交流,写的水随便喷,加油!

原文地址:https://www.cnblogs.com/lanjianhappy/p/8670303.html