Linux命令free-h解释
原命令
root@xxx-03:~# free -h
total used free shared buff/cache available
Mem: 125G 88G 821M 179M 35G 35G
Swap: 19G 121M 19G
问题
1、什么时候开始使⽤swap?
释: 内核参数Swappiness⽤于定义Linux内核将RAM内容复制到交换的数量(以及频率)。该参数的默认值是"60"(可选值为0~100)。当前我这边设置的swappiness的值为30,swappiness参数的值越⾼表明内核交换的⼒度就越⼤。拿我当前的环境来说root@xxx-03:~# cat /proc/sys/vm/swappiness
30
临时修改
root@xxx-03:~# echo "vm.swappiness=10">>/f
root@xxx-03:~# source /f
永久修改
root@xxx-03:~# vim /proc/sys/vm/swappiness
命令释义
第⼀⾏: 系统物理内存的使⽤情况
第⼆⾏: swap交换内存的使⽤情况
total列: 系统中内存的总量,
used列: 已⽤内存总量(used = total-free-buffers-cache)
free列: 空闲内存容量(真正尚未被使⽤的物理内存数)
shared列: 共享内存使⽤的容量
buff/cache: buffers和cache所⽤总量的总和(buffers为内核缓冲区所⽤的内存,cache为页缓存和slabs所⽤的内存容量)
available列为估算值,是在不需要swapping内存的情况下,可⽤物理内存容量。它是从应⽤程序的⾓度看到的可⽤内存数量。
内核为了提升磁盘操作的性能,会消耗⼀部分内存去缓存磁盘数据(就是buffer和cache),所以对于内核来说buffer和cache都属于已经被使⽤的内存。
当应⽤程序需要内存时,如没有⾜够的 free 内存可⽤,内核就会从 buffer 和 cache 中回收内存来满⾜应⽤程序的请求。所以从应⽤程序的⾓度来说,available = free + buffer + cache。
注: 这只是⼀个很理想的计算⽅式,实际中的数据往往有较⼤的误差。
就我⽽⾔了很多关于available列的解释,最后在man free中看到了这段:
root@xxx-03:~# man free
....
....
available
Estimation of how much memory is available for starting new applications, without swapping. Unlike the data provided by
the cache or free fields, this field takes into account page cache and also that not all reclaimable memory slabs will
linux没有vim命令be reclaimed due to items being in use (MemAvailable in /proc/meminfo, available on kernels 3.14, emulated on kernels
2.6.27+, otherwise the same as free)
# 查看各进程使⽤内存情况可使⽤ps_mem命令
root@xxx-03:~# yum -y install ps_mem
root@xxx-03:~# ps_mem
Private + Shared = RAM used Program
108.0 KiB + 92.5 KiB = 200.5 KiB lvmetad
212.0 KiB + 52.0 KiB = 264.0 KiB irqbalance
196.0 KiB + 70.0 KiB = 266.0 KiB auditd
....
....
696.0 KiB + 24.2 MiB = 24.9 MiB rpt_main
888.0 KiB + 24.2 MiB = 25.0 MiB agent_app
48.2 MiB + 136.0 KiB = 48.4 MiB ttagent
92.6 GiB + 16.4 MiB = 92.6 GiB java (11)
---------------------------------
92.8 GiB
通过上⾯可以看出使⽤内存最多的是11各java
# 查看这11各Tomcat的路径等
root@xxx-03:~# ps -ef | grep java | grep -v color
root 4718 1 3 Dec02 ? 01:40:56 /data/app/jdk1.8.0_201/bin/java -Djava.fig.file=/data/app/tomcat-xxx/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKe root 29116 1 2 Nov29 ? 02:31:43 /data/app/jdk1.8.0_201/bin/java -Djava.fig.file=/data/app/tomcat-qua-10/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralD ....
....
root@xxx-03:~# ps -ef | grep java | grep -v color | wc -l
11
欢迎加⼊QQ⼀起讨论Linux、开源等技术
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论