轉:Linux check mem,cpu,Swap
1.什麼是swap
inux作業系統將實體記憶體分為多個小的記憶體塊,稱之為頁(pages). 當應用請求的實體記憶體不夠分配時,作業系統會將一段時間之內不用的記憶體頁交換至swap分割槽,從而為應用釋放記憶體空間。
Swap對於系統過來說非常重要:
1.首先,當主記憶體不夠用時,作業系統可以swap out一部分記憶體頁,迅速為當前急需記憶體的應用或者程式分配記憶體; 2.其次,某些記憶體頁只在應用初始化階段用到,之後可能就不再使用了,作業系統可以將這些記憶體頁swap out,從而為應用或者磁碟cache騰出更多的記憶體空間;
2.swap會帶來哪些問題
我們知道,計算機磁碟I/O通常是系統的瓶頸所在。主記憶體的讀寫速度是納秒級別,而磁碟讀寫速度是毫秒級別,兩者相差3、4個數量級。然而,即使是當前廣泛使用的SSD,讀寫速度相比主記憶體或者CPU cache也相差2、3個數量級。系統發生swap交換越多,那麼系統自然也越慢。
特別對於web伺服器來說,都是面對使用者的互動式應用,因此響應速度尤其重要。如果系統經常因為swap交換而變得響應遲鈍,那麼使用者體驗效果可想而知。
總結成一句話:swap分割槽要有,在關鍵時刻不至於讓你的應用因為記憶體不夠用而被作業系統OOM KILLER幹掉;但是不到關鍵時刻不要進行swap交換,因為這些操作會影響系統的響應速度。
關於swap的swap in和swap out可以從vmstat命令檢視(si表示swap in, so表示swap out).參考: http://xiaobaoqiu.github.io/blog/2015/01/26/vmstatgong-ju/
3.檢視swap佔用
free命令, 參考: http://xiaobaoqiu.github.io/blog/2014/09/04/linux-memory-usage/
4.找到swap佔用元兇
Linux系統中有一個檔案smaps檔案,記錄了當前程式所對應的記憶體映像資訊,路徑為/proc/$pid/smaps.以本機的一個執行緒為例子:
其中Swap表示這個執行緒佔有Swap的情況.
檢視swap的佔有情況的指令碼,按照佔用swap的佔用多少從高到底排序:
然後執行:
5.清除被佔用的swap
在我們明確知道哪些程式吃swap以後,接下來的問題就是我們如何釋放這些swap,釋放swap的意思就是把交換到swap中的資料swap in到實體記憶體頁中。
1.重啟吃swap的服務,比如重啟一下我們的java程式; 2.swapoff + swapon 這個方法的好處是,不用重啟服務,但是需要確保現在有足夠的實體記憶體可以容下從swap中釋放出來的資料。下面給出了swapoff和swapon的具體做法,注意看swapoff後和swapon後,free的輸出有什麼異同; sudo /sbin/swapoff -a sudo /sbin/swapon -a swapoff後,free的輸出裡,swap分割槽的大小變為0,佔用變為0,也就是說swap分割槽中的資料已經釋放到實體記憶體中,同時swap分割槽被禁用。swapon後,free的輸出裡,swap分割槽的容量又恢復了 ,也就是說swap分割槽重新被啟用了。當然我們可以把這兩個命令寫到一起: sudo /sbin/swapoff -a && sudo /sbin/swapon -a http://xiaobaoqiu.github.io/blog/2015/06/23/linux-swap/ http://blog.csdn.net/longerzone/article/details/8015941 http://www.cnblogs.com/lidabo/p/4738113.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-2131566/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux Swap擴容Linux
- LINUX 建立swap空間Linux
- linux 修改swap空間Linux
- linux 禁止swap交換Linux
- Linux系統調整swap大小Linux
- Linux記憶體、Swap、Cache、BufferLinux記憶體
- Linux交換空間swap講解Linux
- Understanding Linux CPU statsLinux
- [轉帖]CPU效能最佳化基本篇:一定要了解Linux CPU哪些基本概念Linux
- [轉帖] CPU效能最佳化基本篇:一定要了解Linux CPU哪些基本概念Linux
- Linux 磁碟掛載和swap空間管理Linux
- 細說 MySQL 之 MEM_ROOTMySql
- [轉帖]海光CPU
- Jtti:linux怎麼檢視swap是否開啟JttiLinux
- Linux如何手動釋放Swap、Buffer和CacheLinux
- linux swap掛載失敗問題處理Linux
- 9.(轉)Spring Configuration Check Unmapped Spring configuration files foundSpringAPP
- PostgreSQL DBA(167) - pgAdmin(config:work_mem)SQL
- onclick="return check()" 和 onclick="check()" 區別
- Linux之CPU排程策略和CPU親和性Linux
- 手動釋放Linux上的Swap、Buffer和CacheLinux
- Linux下swap(交換分割槽)的增刪改Linux
- Linux CPU 效能優化指南Linux優化
- Linux 中交換空間 (swap)應該分多大才好?Linux
- 淺談Linux作業系統的Swap交換區Linux作業系統
- [轉帖]Redis如何繫結CPURedis
- Check if String is HappyAPP
- Linux檢視CPU使用率Linux
- 每天閱讀一個 npm 模組(2)- memNPM
- Linux 效能優化之 CPU 篇 ----- Linux 軟中斷Linux優化
- 教你如何進行 linux swap 交換記憶體擴容Linux記憶體
- CPU單核多核區別【轉載】單核
- 用CPU來加速你的Linux命令Linux
- Linux程序排程器-CPU負載Linux負載
- swap 跟 fstab
- swap擴容
- 提升CPU等資源的利用率,減少CPU的空轉
- CHECK_INTERFACE作用
- check_document_position