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參數的值越高表明內核交換的力度就越大。拿我當前的環境來說即100-30=70%,意為內核拿出內存總量的70%給應用使用,當應用使用完這70%后開始使用swap。剩下的30%供OS本身使用(或其他使用)如上圖所示,125的70%等於89.6G,當應用使用到內存總量的89.6后開始用使用swap,當前已用完或又用到了121M的swap(約值)
root@xxx-03:~# cat /proc/sys/vm/swappiness
30

臨時修改
root@xxx-03:~# echo "vm.swappiness=10">>/etc/sysctl.conf
root@xxx-03:~# source /etc/sysctl.conf

永久修改
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  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.util.logging.config.file=/data/app/tomcat-xxx/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /data/app/tomcat/bin/bootstrap.jar:/data/app/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/data/app/ -Dcatalina.home=/data/app/tomcat -Djava.io.tmpdir=/data/app/tomcat/temp org.apache.catalina.startup.Bootstrap start
root     29116     1  2 Nov29 ?        02:31:43 /data/app/jdk1.8.0_201/bin/java -Djava.util.logging.config.file=/data/app/tomcat-qua-10/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /data/app/tomcat-zhtj-qua-10/bin/bootstrap.jar:/data/app/tomcat-zhtj-qua-10/bin/tomcat-juli.jar -Dcatalina.base=/data/app/tomcat-zhtj-qua10 -Dcatalina.home=/data/app/tomcat-qua-10 -Djava.io.tmpdir=/data/app/tomcat-qua-10/temp org.apache.catalina.startup.Bootstrap start
....
  ....



root@xxx-03:~# ps -ef | grep java | grep -v color | wc -l
11


.
.
.
.
游走在各發行版間老司機QQ群:905201396
不要嫌啰嗦的新手QQ群:756805267
Debian適應QQ群:912567610


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM