內存性能指標
內存基礎概念
先執行一下 top 命令,看結果中關於內存的相關部分
# top
其中的 VIRT、RES、SWAP 都是什么呢?
分別是下面的3個概念:
物理內存 Resident - RES
實際的內存空間 RAM
交換區 Swapped - SWAP
當物理內存不足時,操作系統會把內存中不常用的頁換出到磁盤空間
當被換出的頁需要被訪問時,再換入到物理內存
所以交換區就是用來臨時存放內存中不常用的內容的,感覺就想內存的一個小倉庫
虛擬內存 Virtual - VIRT
虛擬內存 = 物理內存 + 交換區
程序操作內存時,實際就是操作虛擬內存中的地址,操作系統再負責映射到物理地址,或者交換區
快速了解內存狀態
# free
主要指標
total - 物理內存總大小
used - 已經使用的物理內存大小
free - 空閑的物理內存
shared - 多個進程共享內存的大小
buffers/cached - 做為緩存的內存大小
swap - 交互空間的使用狀態
關於內存的幾個常見問題:
1、空閑空間少,是不是內存不夠了?
其實linux中空閑的物理空間經常是很少的,和linux使用內存的思路有關
linux會盡量提高內存使用率,經常會把磁盤上的內容緩存到內存,用來加速
linux認為內存閑着也是閑着,還不如拿來做緩存
當內存不足時,linux就會釋放緩存部分,讓給真正需要的程序使用
2、buffer 和 cache 是什么區別?
buffer 緩存的是磁盤文件的元數據,例如文件屬性、目錄結構等等
cache 緩存的是真正的文件內容
3、如何判斷內存真正不足?
內存不足主要有2個明顯的表現
(1)持續的內存換入換出
(2)較多的主缺頁中斷
主缺頁中斷的概念:
缺頁中斷包含主/次缺頁中斷
次缺頁中斷,是在內存中可以找到目標頁
主缺頁中斷,是在內存中找不到,需要到磁盤中找
所以較多的主缺頁中斷意味着較多的訪問磁盤
可以通過 sar 命令查看指標
# sar -B 1 3
pgpgin/pgpgout 就是內存的換入換出
fault 次缺頁中斷
majflt 主缺頁中斷
vmstat 命令也可以查看一些內存信息
# vmstat 1 5
memory 部分是內存信息
si/so 是交換區的換入換出
補充技巧
執行top命令后,通常不會顯示SWAP列,需要自己指定顯示
在top的界面中點擊‘f’,進入列編輯模式,按下字母‘p’, 會看到SWAP列被選中,然后按回車鍵返回top界面,SWAP列便顯示出來了
CPU 性能指標
CPU性能指標可以從兩方面來看:靜態、動態
靜態指標主要包括:
CPU的型號、主頻、核數、cache等
動態指標主要包括:
CPU的平均負載狀況、CPU的使用率、最耗CPU的進程有哪些?
查看靜態信息:
在服務器運行過程中,一般我們比較少關注CPU的靜態信息,但我們剛開始拿到一台服務器時,就會很關心靜態信息了
好根據這些信息判斷分配給這台服務器多大的壓力等
通過 /proc/cpuinfo 文件來查看
查看動態信息:
服務器變慢時,通常會先查看下CPU的負載是否過高,如果高了,再看下是哪些進程最耗費CPU,CPU使用率也是重要指標,讓我們知道CPU消耗在哪些部分
01、CPU負載狀況
通過負載信息能夠直觀的了解到CPU的壓力狀況,linux會給出最近1分鍾、5分鍾、15分鍾的平均負載值
可以通過 top 命令查看
uptime 命令更加簡潔直觀
查看到負載值后,怎么判斷CPU的負載是否過高呢?
有一個經驗型的標准:
CPU負載上限值 = CPU的核數 * 4
例如是4核CPU,那么CPU的負載最好不要超過16,否則,CPU的壓力就很大了
好比一個超市,有4個收銀台,如果有16個顧客在排隊結賬,每個窗口4個人,顧客可以接受,收銀員也不會感覺壓力很大
02、耗費CPU的主要進程
發現CPU負載過高后,我們肯定想知道是誰把CPU搞的這么忙
通過 top 命令查看
用 ps 命令根據CPU使用量對進程排序
# ps -aux --sort -pcpu | less
03、CPU使用率
通過 top 命令查看
還可以查看每個核的使用率狀況,執行 top 后按數字1鍵,就可以列出每個cpu的使用率
其中有幾個主要信息項
id - CPU的空閑度
us - 用戶進程對CPU的使用率
sy - 系統進程對CPU的使用率
wa - IO等待情況
st - 如果系統中運行了虛擬機,此項顯示虛機使用CPU的情況