1. 程式人生 > >Linux監控工具介紹系列——smem

Linux監控工具介紹系列——smem

smem工具介紹

    smem是Linux系統上的一款可以生成多種記憶體耗用報告的命令列工具。與現有工具不一樣的是smem可以報告實際使用的實體記憶體(PSS),這是一種更有意義的指標。可以衡量虛擬記憶體系統的庫和應用程式所佔用的記憶體數量。

由於大部分的實體記憶體通常在多個應用程式之間共享,名為實際使用實體記憶體(RSS)的這個標準的記憶體耗用衡量指標會大大高估記憶體耗用情況。PSS這個引數而是衡量了每個應用程式在每個共享記憶體區中的“公平分配”,給出了一個切合實際的衡量指標。

smem有許多功能特性:

系統概況列表

按程序、對映和使用者列表

按使用者、對映或使用者過濾

來自多個數據源的可配置列

可配置的輸出單位和百分比

可配置的標題和總和

從/proc讀取活動資料

從目錄映象或經過壓縮的打包檔案讀取資料快照

面向嵌入式系統的輕型捕獲工具

內建的圖表生成功能

smem的系統要求

系統核心為2.6.27以上

Python版本必須為2.4或以上

依賴matplotlib庫生成圖表(可選的,自動檢測)依賴matplotlib,是因為smem除了一般的文字資訊報告外,smem 也可以生成條狀或餅狀圖。

對應的英文原文如下:

smem is a tool that can give numerous reports on memory usage on Linux systems. Unlike existing tools, smem can report proportional set size

(PSS), which is a more meaningful representation of the amount of memory used by libraries and applications in a virtual memory system.

Because large portions of physical memory are typically shared among multiple applications, the standard measure of memory usage known as resident set size (RSS) will significantly overestimate memory usage. PSS instead measures each application's "fair share" of each shared area to give a realistic measure.

smem has many features:

system overview listing

listings by process, mapping, user

filtering by process, mapping, or user

configurable columns from multiple data sources

configurable output units and percentages

configurable headers and totals

reading live data from /proc

reading data snapshots from directory mirrors or compressed tarballs

lightweight capture tool for embedded systems

built-in chart generation

smem has a few requirements:

a reasonably modern kernel (> 2.6.27 or so)

a reasonably recent version of Python (2.4 or so)

the matplotlib library for chart generation (optional, auto-detected)

Linux使用到了虛擬記憶體(virtual memory),因此要準確的計算一個程序實際使用的實體記憶體就不是那麼簡單。只知道程序的虛擬記憶體大小也並沒有太大的用處,因為還是無法獲取到實際分配的實體記憶體大小。

RSS(Resident set size),使用top命令可以查詢到,是最常用的記憶體指標,表示程序佔用的實體記憶體大小。但是,將各程序的RSS值相加,通常會超出整個系統的記憶體消耗,這是因為RSS中包含了各程序間共享的記憶體。

PSS(Proportional set size)所有使用某共享庫的程式均分該共享庫佔用的記憶體時,每個程序佔用的記憶體。顯然所有程序的PSS之和就是系統的記憶體使用量。它會更準確一些,它將共享記憶體的大小進行平均後,再分攤到各程序上去。

USS(Unique set size )程序獨自佔用的記憶體,它是PSS中自己的部分,它只計算了程序獨自佔用的記憶體大小,不包含任何共享的部分。

       VSS – Virtual Set Size 虛擬耗用記憶體(包含共享庫佔用的記憶體)

       RSS – Resident Set Size 實際使用實體記憶體(包含共享庫佔用的記憶體)

       PSS – Proportional Set Size 實際使用的實體記憶體(比例分配共享庫佔用的記憶體)

       USS – Unique Set Size 程序獨自佔用的實體記憶體(不包含共享庫佔用的記憶體)

smem工具安裝

   首先去官方網址https://www.selenic.com/smem/ 下載對應的smem安裝包,目前最新的版本為smem-1.4.  下面安裝是在RHEL 5.7上安裝,不同版本系統、以及不同安裝方法都有一些區別。

   1: [[email protected] tmp]# tar -xzvf smem-1.4.tar.gz 
   2: smem-1.4/.hg_archival.txt
   3: smem-1.4/.hgtags
   4: smem-1.4/COPYING
   5: smem-1.4/smem
   6: smem-1.4/smem.8
   7: smem-1.4/smemcap.c
   8: [[email protected] tmp]# cd smem-1.4
   9: [[email protected] smem-1.4]# ls
  10: COPYING  smem  smem.8  smemcap.c
  11: [[email protected] smem-1.4]# cp /tmp/smem-1.4/smem  /usr/bin
  12: [[email protected] smem-1.4]# chmod +x /usr/bin/smem

smem工具使用

檢視smem命令的相關幫助資訊

   1: [[email protected] tmp]# smem -h
   2: usage: smem [options]
   3:  
   4: options:
   5:   -h, --help            show this help message and exit
   6:   -H, --no-header       disable header line
   7:   -c COLUMNS, --columns=COLUMNS
   8:                         columns to show
   9:   -t, --totals          show totals
  10:   -R REALMEM, --realmem=REALMEM
  11:                         amount of physical RAM
  12:   -K KERNEL, --kernel=KERNEL
  13:                         path to kernel image
  14:   -m, --mappings        show mappings
  15:   -u, --users           show users
  16:   -w, --system          show whole system
  17:   -P PROCESSFILTER, --processfilter=PROCESSFILTER
  18:                         process filter regex
  19:   -M MAPFILTER, --mapfilter=MAPFILTER
  20:                         map filter regex
  21:   -U USERFILTER, --userfilter=USERFILTER
  22:                         user filter regex
  23:   -n, --numeric         numeric output
  24:   -s SORT, --sort=SORT  field to sort on
  25:   -r, --reverse         reverse sort
  26:   -p, --percent         show percentage
  27:   -k, --abbreviate      show unit suffixes
  28:   --pie=PIE             show pie graph
  29:   --bar=BAR             show bar graph
  30:   -S SOURCE, --source=SOURCE
  31:                         /proc data source

1:無引數時顯示所有程序的記憶體使用情況

2:引數-u 顯示每個使用者所耗用的記憶體總量

smem -u

clip_image001

3: 引數-p 檢視耗用記憶體情況的百分比。

smem -p

clip_image002

4: 引數-w 檢視系統記憶體使用情況

   1: [[email protected] ~]# smem -w
   2: Area                           Used      Cache   Noncache 
   3: firmware/hardware                 0          0          0 
   4: kernel image                      0          0          0 
   5: kernel dynamic memory      22021892   21721584     300308 
   6: userspace memory            1899296     122424    1776872 
   7: free memory                  686340     686340          0 
   8: [[email protected] ~]# smem -w -p
   9: Area                           Used      Cache   Noncache 
  10: firmware/hardware             0.00%      0.00%      0.00% 
  11: kernel image                  0.00%      0.00%      0.00% 
  12: kernel dynamic memory        89.49%     88.27%      1.22% 
  13: userspace memory              7.73%      0.50%      7.23% 
  14: free memory                   2.78%      2.78%      0.00% 

5: 引數-R REALMEM,REALMEM這個值是指實體記憶體數量。此引數可以讓smem在整個系統(-w)的輸出中發現韌體/硬體所耗用的記憶體數量(對比上下即可發現,注意firmware/hardware)

   1: [[email protected] ~]# smem -R 24G -w
   2: Area                           Used      Cache   Noncache 
   3: firmware/hardware            558296          0     558296 
   4: kernel image                      0          0          0 
   5: kernel dynamic memory      22024108   21722972     301136 
   6: userspace memory            1907676     122436    1785240 
   7: free memory                  675744     675744          0 

6:引數-c 用來顯示需要展示的列。

   1: [[email protected] ~]# smem -c "name user pss"
   2: Name                     User          PSS 
   3: mingetty                 root           18 
   4: mingetty                 root           18 
   5: mingetty                 root           18 
   6: mingetty                 root           18 
   7: mingetty                 root           18 
   8: bash                     root          911 
   9: sftp-server              root          939 
  10: cupsd                    root         1208 
  11: rsyslogd                 root         1403 
  12: smbd                     tibco        1474 
  13: hald                     haldaemon     1477 
  14: pickup                   postfix      1487 
  15: vmtoolsd                 root         2309 
  16: sshd                     root         2521 
  17: python                   root         5464 
  18: beremote                 root         7585 
  19: java                     weblogic    18454 
  20: java                     weblogic    31431 
  21: java                     weblogic    69389 
  22: java                     tomcat     339977 
  23: java                     tomcat     355037 
  24: java                     tomcat     421133 
  25: java                     weblogic   640531 

7: 引數-s 根據某一列(例如 rss)來排序.

clip_image003

8: 引數-r 一般與引數-s結合使用,表示反轉排序(從升序改為降序)

clip_image004

9:引數-M 過濾相關程序。Show processes filtered by mapping

   1: [[email protected] tmp]# smem -M mysql
   2:   PID User     Command                         Swap      USS      PSS      RSS 
   3:  4172 mysql    /usr/sbin/mysqld --basedir=        0     3924     3924     3924 
            
           

相關推薦

Linux監控工具介紹系列——smem

smem工具介紹     smem是Linux系統上的一款可以生成多種記憶體耗用報告的命令列工具。與現有工具不一樣的是smem可以報告實際使用的實體記憶體(PSS),這是一種更有意義的指標。可以衡量虛擬記憶體系統的庫和應用程式所佔用的記憶體數量。 由於大部分的實體記憶體通常在多個應用程式之間共享,名為實際使用

Linux監控工具介紹系列——vmstat

[[email protected] ~]# vmstat -w 2 5 procs -------------------memory------------------ ---swap-- -----io---- --system-- -----cpu------- r  b       s

Linux效能監控工具sysstat系列介紹與安裝

簡介 sysstat提供了Linux效能監控的工具集,包括sar、sadf、mpstat、iostat、pidstat等,這些工具可以監控系統性能和使用情況。各工具的作用如下: iostat - 提供CPU統計,儲存I/O統計(磁碟裝置,分割槽及網路檔案系統) mpstat - 提供單個或組合CPU

Linux常用工具介紹——free

linux常用工具在Linux系統中,我們查看、監控系統內存使用情況,一般最常用的命令就是free,關於free的實現,其實是調用linux下的/proc/meminfo文件。[[email protected]/* */ /]# free -Vfree from procps-ng 3.3.9[

Linux監控平臺介紹,zabbix監控介紹,安裝zabbix,忘記admin密碼如何做

linux 操作系統 zabbix 筆記內容:19.1 Linux監控平臺介紹19.2 zabbix監控介紹19.3/19.4/19.6 安裝zabbix19.5 忘記Admin密碼如何做筆記日期:2017-11-1619.1 Linux監控平臺介紹監控是一個很重要的東西,如果一個企業裏的服務器沒

linux監控平臺介紹、zabbix監控介紹、安裝zabbix

web .so dmi zabbix日誌 展現 com 狀態 中文顯示 代理 linux監控平臺介紹 常見開源監控軟件 cacti、nagios、zabbix、smokeping、open-falcon 等等。 nagios和zabbix流行度很高。 cacti

19.1 Linux監控平臺介紹 19.2 zabbix監控介紹及安裝

19.1 Linux監控平臺介紹 19.19.1 Linux監控平臺介紹 19.2 zabbix監控介紹 19.3/19.4/19.6 安裝zabbix 19.5 忘記Admin密碼如何做 19.1 Linux監控平臺介紹 19.2 zabbix監控介紹及安裝

Linux監控平臺介紹, zabbix監控介紹,安裝zabbix,忘記Admin密碼如何做

zabbixLinux監控平臺介紹 常見開源監控軟件cacti、nagios、zabbix、smokeping、open-falcon等等 cacti、smokeping偏向於基礎監控,成圖非常漂亮 cacti、nagios、zabbix服務端監控中心,需要php環境支持,其中zabbix和cacti都需要m

六十四、Linux監控平臺介紹、zabbix監控介紹、安裝zabbix、忘記Admin密碼如何做

LInux監控平臺介紹 zabbix監控介紹 安裝zabbix 忘記Admin密碼如何做 六十四、Linux監控平臺介紹、zabbix監控介紹、安裝zabbix、忘記Admin密碼如何做一、Linux監控平臺介紹 cacti、nagios、zabbix、smokeping、open-falco

linux監控平臺介紹,zabbix監控介紹,zabbix安裝,忘記Admin密碼如何做

stat can emctl mct web img mman row 安裝源 linux監控平臺介紹 cacti、nagios、zabbix、smokeping、open-falcon等等 cacti、smokeping偏向於基礎監控,成圖非常漂亮 cacti、nagi

19.1 Linux監控平臺介紹 19.2 zabbix監控介紹 19.3/19.4/19.6 安裝zabbix 19.5 忘記Admin密碼如何做

gre users gzip ping epo type 一行 ntp dmi linux監控平臺介紹 常見開源監控軟件:cacti,nagios,zabbix,smokeping,open-falcon等等 cacti,smokeping偏向於基礎監控,成圖非常漂亮 ca

Linux監控平臺介紹 zabbix監控介紹 安裝zabbix 忘記Admin密碼如何做

.repo auth off sys read .sql oss 屬組 關閉 一、Linux監控平臺介紹這幾款軟件都是需要PHP環境支持,使用Apache PHP或者NGINX的PHP都可以,nagios不需要使用mysql,cacti和zabbix是需要使用mysql的二

一款優秀的linux監控工具——nmon

核心 語法 pri priority str 任務管理器 strong 學習 rec (一)nmon工具概述 nmon是以一個用來做linux服務器監控的工具,通過nmon,可以實現對以下參數的監控: --CPU使用率 --內存、交換空間使用率 --網絡

Linux監控工具vmstat命令詳解

原帖地址:http://www.ha97.com/4512.html 一、前言 很顯然從名字中我們就可以知道vmstat是一個檢視虛擬記憶體(Virtual Memory)使用狀況的工具,但是怎樣通過vmstat來發現系統中的瓶頸呢?在回答這個問題前,還是讓我們回顧一下Linux

Mysql監控工具介紹-Monyog

MONyog監控工具 MONyog是一個優秀的MySQL監控工具,可以實時監測MYSQL伺服器,檢視MySQL伺服器的執行狀態。 支援查詢分析功能,能夠輕鬆找出有MySQL的問題所在,此外,還可以幫助使用者掌握伺服器的執行狀態,檢視在任一時間點繪製的具有詳細查詢資訊的圖表。 支援MySQL、MariaD

Linux監控平臺介紹

cti 其中 linux監控平臺 服務端 mys mysq 項目 sql falcon 常見開源監控軟件:cacti、nagios、zabbix、smokeping、open-falcon等等 cacti(監控網絡設備)、smokeping偏向於基礎監控,成圖非常漂亮 ca

eBPF監控工具bcc系列一啟航

在eBPF篇中,我們知道雖然可用 C 來實現 BPF,但編譯出來的卻仍然是 ELF 檔案,開發者需要手動析出真正可以注入核心的程式碼。工作有些麻煩,於是就有人設計了 BPF Compiler Collection(BCC),BCC 是一個(基於 C 和 C++) python

Java 記憶體洩露監控工具-- JVM監控工具介紹jstack, jconsole, jinfo, jmap, jdb, jstat

u              jstack的用法 如果java程式崩潰生成core檔案,jstack工具可以用來獲得core檔案的java stack和native stack的資訊,從而可以輕鬆地知道java程式是如何崩潰和在程式何處發生問題。另外,jstack工具還可以附屬到正在執行的java程式中,看

Java記憶體洩露監控工具:JVM監控工具介紹

jstack -- 如果java程式崩潰生成core檔案,jstack工具可以用來獲得core檔案的java stack和native stack的資訊,從而可以輕鬆地知道java程式是如何崩潰和在程式何處發生問題。另外,jstack工具還可以附屬到正在執行的java程式中,看到 當時執行的java程式的

Linux終端下 dstat 監控工具

linux終端下 dstat 監控工具dstat 是一個可以取代vmstat,iostat,netstat和ifstat這些命令的多功能產品。dstat克服了這些命令的局限並增加了一些另外的功能,增加了監控項,也變得更靈活了。dstat可以很方便監控系統運行狀況並用於基準測試和排除故障。dstat可以讓你實時