linux监控命令-free
转载自:
https://blog.51cto.com/bmbwolf/970338
参数说明
-b 以Byte为单位显示内存使用情况。 -k 以KB为单位显示内存使用情况。 -m 以MB为单位显示内存使用情况。 -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
使用例子
[root@kuaihe-soa-001 ~]#free total used free shared buffers cached Mem: 32879236 29491892 3387344 160 143280 4063916 -/+ buffers/cache: 25284696 7594540 Swap: 0 0 0
1. total: 内存总数 2. used:已经使用的内存数 3. free: 空闲的内存数 4. shared: 多个进程共享的内存总额 5. -buffers/cache: (已用)的内存数,即used-buffers-cached //反映实际被用掉的内存数 6. +buffers/cache: (可用)的内存数,即free+buffers+cached //反映可以使用的内存数
7.available :还可以被 应用程序使用的物理内存大小
可用内存的计算公式为:
可用内存=free+buffers+cached,即399M+109M+723M=1232M
内存总数与已使用内存数和空闲内存数的关系:
total(1968M)=used(1569M)+free(399M)
有的系统这样显示
total used free shared buff/cache available Mem: 31 7 8 0 15 23 Swap: 0 0
buff/cache 被 buffer 和 cache 使用的物理内存大小
available 还可以被 应用程序 使用的物理内存大小
注:观察Linux的内存使用情况时,只要没有发现用swap的交换空间,就不用担心自己的内存太少;如果常常看到swap用了很多,那么就要考虑增加物理内存了。这也是在Linux服务器上看内存是否够用的标准。
buffer与cache的区别
buffer 即写如磁盘时,先保存到磁盘缓冲区(buffer),然后再Sync刷入到磁盘。
cache 即读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的 后续程序直接读取cache
如何划分buffer/cache(已使用 or 空闲)
- 操作系统的角度:这块内存确实被操作系统使用了。
- 用户角度:如果用户要使用,这块内存是可以很快被回收而被用户空间程序使用,因此从用户角度而言这块内存应被划为空闲状态。
所以这一块儿空间 如果在后续需要使用 是可以释放划分为空闲的
Linux这种机制的好处
这是Linux一种非常优秀的设计,目的就是为了提升磁盘IO的性能,从低速的块设备上读取的数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,它可以从内存中直接读取,绕开了低速的块设备,从而提高系统的整体性能。
为了提高系统性能和不浪费内存,linux把多的内存做了cache,以提高io速度.你的那些内存并没有被占用。
手动释放buffer cache
若buff/cache过高而free过低,可用以下命令进行释放优化 echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。 echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。 echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。 ————————————————
查看占用最高的进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步