内存和swap查看 内存是拿来用的 不是看的
內存和swap的查看 和腳本
內存的查看可以是 free ? ?top等
free ? ?查看系統的全部內存使用情況
top ? ? 可以查看全部使用情況和單個程序的消耗
free
? 常用參數
b 以字節為單位顯示。
-k 以K字節為單位顯示。默認顯示。
-m 以兆字節為單位顯示。
-s 每隔多少秒重復執行。可編寫一個腳本用于監控。
顯示的狀態如下:
其中:
第一行 total ? 995 指服務器的總內存的大小
? ? ? ?used ? ?923 指已經分配的內存的大小?(包含buffers 與cache )使用的數量,但其中可能部分緩存并未實際使用。 ?
? ? ? ?free ? ? 71 指未分配的內存。
? ? ? ?shared ? ?0 指共享內存的大小,一般系統不會用到。
? ? ? ?buffers 202 指系統分配但未被使用的buffers 數量。?
? ? ? ?cached ?417 指系統分配但未被使用的cached數量
第二行?
-/+ buffers/cache的意思:
-buffers/cache 的內存數: 303 (等于第1行的 used - buffers - cached)
+buffers/cache 的內存數: 691 (等于第1行的 free + buffers + cached)
注:此處的內存數在用上面式子計算后,在大小上有一點點出入(還不知道是什么原因)。
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。
buffers與cached的區別:
buffers是用來給塊設備做的緩沖大小,他只記錄文件系統的metadata以及 tracking in-flight pages。
cached用來給文件做緩沖。
即:buffers是用來存儲目錄里面有什么內容,權限等等,而cached用來記憶我們打開的文件.
第三行?
swap的使用情況 ?當swap使用的較多的時候證明內存不夠用,跟虛擬內存頻繁交換。
對于 第一部分(Mem)與第二部分(-/+ buffers/cache)
其實我們可以從二個方面來解釋.
對操作系統來講是Mem的參數.buffers/cached 都是屬于被使用,所以它認為free只有71.
對應用程序來講是(-/+ buffers/cach).buffers/cached 是等同可用的,因為buffer/cached是為了提高程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。
所以,以應用來看看,以(-/+buffers/cache)的free和used為主.所以我們看這個就好了.另外告訴大家一些常識.Linux為了提高磁盤和內存存取效率,Linux做了很多精心的設計, 除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉換),還采取了兩種主要Cache方式:Buffer Cache和Page?Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache能有效縮短了I/O系統調用(比如read,write,getdents)的時間。
記住內存是拿來用的,不是拿來看的.不像windows,無論你的真實物理內存有多少,他都要拿硬盤交換文件來讀.這也就是windows為什么常常提示虛擬空間不足的原因.你們想想,多無聊,在內存還有大部分的時候,拿出一部分硬盤空間來充當內存.硬盤怎么會快過內存.所以,我們看linux,只要不用swap的交換空間,就不用擔心自己的內存太少.如果常常swap用很多,可能你就要考慮加物理內存了.這也是linux看內存是否夠用的標準哦.
top
top的參數就不說了 現在說下與內存相關的東西:
其中?
?VIRT 是分配內存的大小,并不是真實使用的大小
?RES ?是真正使用的內存的大小,是真實使用的
下面是查看內存 ?swap 的腳本?
#!/bin/bash
###############################################################################
# 日期 : 2015-09-10
# 作者 : wangtenghe?
# Email : secure1@sina.com
# 版本 : 2.0
# 腳本功能 : 列出正在占用swap的進程。
# 調用關系 :
# 其他說明 :
###############################################################################
echo -e "PID\t\tSwap\t\tProc_Name"
?
?for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]`
?do
? ? ? if [ $pid -eq 1 ];then continue;fi # Do not check init process
? ? ? ? grep -q "Swap" /proc/$pid/smaps 2>/dev/null
? ? ? ? ?if [ $? -eq 0 ];then?
? ? ? ? ? swap=$(gawk '/Swap/{ sum+=$2;} END{ print sum }' /proc/$pid/smaps)
? ? ? ? ? ? proc_name=$(ps aux | grep -w "$pid" | awk '!/grep/{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')
? ? ? ? ? if [ $swap -gt 0 ];then?
? ? ? ? ? echo -e "$pid\t${swap}\t$proc_name"
? ? ? ? ? fi
? ? ? ? ? fi
? ? ? ? ?done | sort -k2 -n | gawk -F'\t' '{?
? ? ? ? if($2<1024)
? ? ? ? ? ?printf("%-10s\t%15sKB\t%s\n",$1,$2,$3);
? ? ? ? else if($2<1048576)
? ? ? ? ? ?printf("%-10s\t%15.2fMB\t%s\n",$1,$2/1024,$3);
? ? ? ? else
? ? ? printf("%-10s\t%15.2fGB\t%s\n",$1,$2/1048576,$3);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }'
#! /bin/bash
#!/bin/bash
###############################################################################
# 日期 : 2015-09-14
# 作者 : wangtenghe?
# Email : secure1@sina.com
# 版本 :1.0?
# 腳本功能 : 列出正在內存和cpu使用率的大小、PID和程序
# 調用關系 :
# 其他說明 :
###############################################################################
ps -aux ?| awk '$3>0 || $6>0{print}'|sort -k6 -n | awk '!/\$/{
? ? ? ? if($6<1024)
? ? ? ? ? ?printf("%-10s\t%10s%15.2fKB\t%s%s%s%s%s\n",$2,$3,$6,$11" ",$12" ",$13" ",$14" ",$15);
? ? ? ? else if($6<1048576)
? ? ? ? ? ?printf("%-10s\t%10s%15.2fMB\t%s%s%s%s%s\n",$2,$3,$6/1024,$11" ",$12" ",$13" ",$14" ",$15);
? ? ? ? else
? ? ? ? ? ?printf("%-10s\t%10s%15.2fGB\t%s%s%s%s%s\n",$2,$3,$6/1048576,$11" ",$12" ",$13" ",$14" ",$15);
? ? ? ? fi
}'
echo -e "PID\t\t\tCPU%\t\tMEM\tProc_Name"
轉載于:https://blog.51cto.com/welcomeweb/1706782
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的内存和swap查看 内存是拿来用的 不是看的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有效用例分析阅读笔记一
- 下一篇: 队列 和 线程 之GCD dispatc