linux 記憶體負載分析
linux 記憶體負載分析
衡量記憶體負載的一個很重要的指標就是頁面置換的頻率。當linux系統頻繁的對頁進行換進換出
的時候,說明實體記憶體不過,不得不進行頻繁的置換頁面。
使用vmstat(virtual memory statistics)進行記憶體負載分析
[oracle@zeng ~]$ vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 758668 19688 64508 56 0 0 256 263 118 3 22 74 2 0
0 0 0 758668 19688 64532 0 0 0 0 21 10 0 1 99 0 0
0 0 0 758668 19688 64532 0 0 0 0 19 7 0 1 100 0 0
對於記憶體負載分析其中關鍵的欄位是:
swpd:虛擬記憶體的使用總量。
si:每秒從虛擬記憶體讀入記憶體的大小。
so:每秒從記憶體寫入虛擬記憶體的大小。
如果這3個欄位的值比較高說明出現了記憶體瓶頸。
也可以使用free 來標識記憶體的負載情況.
[oracle@zeng ~]$ free
total used free shared buffers cached
Mem: 911564 155492 756072 0 20564 65696
-/+ buffers/cache: 69232 842332
Swap: 3481592 0 3481592
如果發現linux 系統使用了其中大部分的實體記憶體。這是正常的linux使用這些實體記憶體來
提升系統的效能。其中要注意的是swap 那一行.
[oracle@zeng ~]$ free -s 3
total used free shared buffers cached
Mem: 911564 155748 755816 0 20620 65732
-/+ buffers/cache: 69396 842168
Swap: 3481592 0 3481592
total used free shared buffers cached
Mem: 911564 155748 755816 0 20620 65732
-/+ buffers/cache: 69396 842168
Swap: 3481592 0 3481592
-s 選項表示間隔多少秒,報告一次記憶體負載情況。使用Ctrl+C退出。可以把上面
的輸出重定向到檔案。
也可以透過檢視虛擬檔案 /proc/meminfo 來檢視記憶體的負載情況。
[oracle@zeng ~]$ cat /proc/meminfo
MemTotal: 911564 kB
MemFree: 239024 kB
Buffers: 23304 kB
Cached: 513724 kB
SwapCached: 0 kB
Active: 216272 kB
Inactive: 387160 kB
如果你在輸出中看到SwapFree 欄位的值較低,說明你的系統記憶體負載很高,需要新增
額外的記憶體,或者監控系統程式對記憶體的使用情況,把一些不需要的程式結束掉。緩解
記憶體負載。vmstat,free,cat /proc/meminfo 都可以和watch 一起配合使用。
使用sar 進行實時,當天,當天前本月的其他天的記憶體負載情況分析。
使用sar 進行歷史記憶體發展分析.
[oracle@zeng ~]$ sar -B -f /var/log/sa/sa08
Linux 2.6.32-71.el6.i686 (zeng) 03/08/2012 _i686_ (1 CPU)
09:50:01 AM LINUX RESTART
10:00:02 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
10:10:01 AM 0.00 79.83 0.00 124.61 0.00 0.00 0.00 0.00 0.00
10:20:01 AM 0.00 1.42 0.00 51.98 0.00 0.00 0.00 0.00 0.00
10:30:01 AM 0.00 113.79 0.00 135.36 0.00 0.00 0.00 0.00 0.00
10:40:02 AM 0.00 0.02 0.00 32.64 0.00 0.00 0.00 0.00 0.00
10:50:01 AM 0.00 0.02 0.00 33.78 0.00 0.00 0.00 0.00
-B 表示報告系統的分析統計情況。
pgpgin/s :每秒從磁碟中調入的大小,bytes。
pgpgout/s :每秒從記憶體中換出的大小,bytes。
-f 表示要從哪個歷史日誌檔案中讀取相應的報告資料。/var/log/sa/saNN NN表示本月的天數。
[oracle@zeng ~]$ sar -W -f /var/log/sa/sa13
Linux 2.6.32-71.el6.i686 (zeng) 03/13/2012 _i686_ (1 CPU)
12:57:10 PM LINUX RESTART
01:00:02 PM pswpin/s pswpout/s
01:10:02 PM 20.41 0.00
01:20:01 PM 58.31 0.00
01:30:02 PM 19.76 0.00
01:40:01 PM 20.00 0.00
01:50:01 PM 19.75 0.00
02:00:01 PM 19.98 0.00
02:10:01 PM 33.62 0.00
02:20:01 PM 20.94 0.00
02:30:01 PM 20.84 0.00
02:40:01 PM 20.40 0.00
-W 表示報告交換的統計情況。
pswpin/s:每秒置換進來的大小。
pswpout/s:每秒置換出的大小。
如果這兩個值較高,說明記憶體負載大。
使用sar 進行實時記憶體負載分析.
[oracle@zeng ~]$ sar -W 3 5
Linux 2.6.32-71.el6.i686 (zeng) 03/14/2012 _i686_ (1 CPU)
10:54:01 AM pswpin/s pswpout/s
10:54:04 AM 22.61 0.00
10:54:07 AM 17.02 0.00
10:54:10 AM 22.38 0.00
10:54:13 AM 16.84 0.00
10:54:16 AM 22.30 0.00
Average: 20.24 0.00
3 表示報告的時間間隔s。
5 表示報告的次數。
使用sar 進行當前記憶體負載分析。
[oracle@zeng ~]$ sar -W
Linux 2.6.32-71.el6.i686 (zeng) 03/14/2012 _i686_ (1 CPU)
09:48:13 AM LINUX RESTART
09:50:02 AM pswpin/s pswpout/s
10:00:01 AM 1.00 0.00
10:10:01 AM 0.61 0.00
10:20:01 AM 19.49 0.00
10:30:02 AM 29.70 0.00
10:40:01 AM 38.41 0.00
10:50:02 AM 20.49 0.00
Average: 18.07 0.00
[oracle@zeng ~]$ sar -r
Linux 2.6.32-71.el6.i686 (zeng) 03/14/2012 _i686_ (1 CPU)
09:48:13 AM LINUX RESTART
09:50:02 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
10:00:01 AM 755660 155904 17.10 20240 65580 176952 4.03
10:10:01 AM 755684 155880 17.10 20628 65732 176056 4.01
10:20:01 AM 209720 701844 76.99 23648 537324 693520 15.79
10:30:02 AM 177240 734324 80.56 24452 568336 693476 15.79
10:40:01 AM 60144 851420 93.40 86464 576484 694376 15.81
10:50:02 AM 59284 852280 93.50 87264 576512 694376 15.81
Average: 336289 575275 63.11 43783 398328 521459 11.87
-r 表示報告記憶體使用率統計。
欄位解釋:
kbmemfree 空閒記憶體大小。
kbmemused 已被使用的記憶體大小。
%memused 被使用的記憶體佔總記憶體的百分比。
kbbuffers 被用作buffer 的記憶體大小。
kbcached 被用作cache 的記憶體大小。
kbcommit 確保當前的工作負載,所需要的記憶體大小。以保證不需要使用到swap。
%commit kbcommit 與 RAM+swap 的比值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-718485/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 使用記憶體分析Linux記憶體
- Linux記憶體洩露案例分析和記憶體管理分享Linux記憶體洩露
- Shell----監控CPU/記憶體/負載高時的程式記憶體負載
- linux程式之記憶體洩漏分析Linux記憶體
- Linux堆記憶體管理深入分析Linux記憶體
- Linux核心記憶體管子系統分析Linux記憶體
- 記憶體分析與記憶體洩漏定位記憶體
- Ubuntu記憶體分析Ubuntu記憶體
- JVM記憶體分析JVM記憶體
- Linux 記憶體管理:記憶體對映Linux記憶體
- [轉載] Java直接記憶體與堆記憶體Java記憶體
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- Android圖片載入記憶體佔用分析Android記憶體
- 堆記憶體和棧記憶體詳解(轉載)記憶體
- Swoole 原始碼分析——記憶體模組之記憶體池原始碼記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- 記憶體效能分析工具記憶體
- nginx共享記憶體分析Nginx記憶體
- Java 物件記憶體分析Java物件記憶體
- Go記憶體逃逸分析Go記憶體
- swoole記憶體管理分析記憶體
- Oracle記憶體全面分析Oracle記憶體
- 轉:Oracle 記憶體分析Oracle記憶體
- Java記憶體分析一Java記憶體
- 11-記憶體分析記憶體
- Linux堆記憶體管理深入分析(下半部)Linux記憶體
- Linux效能優化:記憶體使用情況分析Linux優化記憶體
- Unity效能分析(三)記憶體分析Unity記憶體
- 獲取linux可用記憶體 剩餘記憶體Linux記憶體
- 清理linux記憶體Linux記憶體
- linux記憶體管理Linux記憶體
- LINUX 記憶體管理Linux記憶體
- linux共享記憶體Linux記憶體
- valgrind 記憶體洩漏分析記憶體
- Lowmemorykiller記憶體洩露分析記憶體洩露
- SQLServer記憶體問題分析SQLServer記憶體
- Go記憶體管理逃逸分析Go記憶體
- Windows記憶體管理分析(一)Windows記憶體