Linux 查看进度消耗内存情形总括

 

Linux监控工具介绍连串——smem

smem工具介绍

    smem是Linux系统上的黄金年代款能够生成两种内部存款和储蓄器耗用报告的命令行工具。与存活工具不平等的是smem能够告知实际应用的物理内部存款和储蓄器(PSS),那是风度翩翩种更有意义的指标。能够度量设想内部存款和储蓄器系统的库和应用程序所据有的内部存款和储蓄器数量。

是因为大多数的物理内部存款和储蓄器平日在四个应用程序之间分享,名称为实际行使物理内部存款和储蓄器(奥迪Q7SS)的这么些正式的内部存储器耗花费量指标会大大高估内部存款和储蓄器耗用状态。PSS这么些参数而是衡量了各样应用程序在各样分享内部存款和储蓄器区中的“公平分配”,给出了三个适合实际的权衡指标。

smem有好多效应特色:

系统概况列表
按进程、映射和用户列表
按用户、映射或用户过滤
来自多个数据源的可配置列
可配置的输出单位和百分比
可配置的标题和总和
从/proc读取活动数据
从目录镜像或经过压缩的打包文件读取数据快照
面向嵌入式系统的轻型捕获工具
内置的图表生成功能

smem的体系须求

系统内核为2.6.27以上
Python版本必须为2.4或以上
依赖matplotlib库生成图表(可选的,自动检测)依赖matplotlib,是因为smem除了一般的文本信息报告外,smem 也可以生成条状或饼状图。

相应的斯洛伐克共和国(The Slovak Republic)语原版的书文如下:

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),因而要规范的计量二个进度实际采纳的物理内部存储器就不是那么粗略。只晓得进度的设想内部存款和储蓄器大小也并不曾太大的用处,因为仍然无法取获得实际分配的物理内部存款和储蓄器大小。

福睿斯SS(Resident set size),使用top命令能够查询到,是最常用的内部存款和储蓄器指标,表示经过占用的情理内部存储器大小。可是,将各进度的安德拉SS值相加,日常会当先整个类其余内部存款和储蓄器消耗,那是因为KoleosSS中富含了各进度间分享的内部存款和储蓄器。

PSS(Proportional set size)全数应用某分享库的主次均分该共享库占用的内部存款和储蓄器时,每一个进度占用的内部存储器。显明全部进度的PSS之和就是系统的内部存款和储蓄器使用量。它会更可相信一些,它将分享内部存款和储蓄器的深浅进行平均后,再分摊到各进度上去。

USS(Unique set size )进程独自占用的内部存储器,它是PSS中友好的豆蔻梢头部分,它只计算了经过独自占用的内部存储器大小,不分包别的分享的部分。

      VSS – Virtual Set Size 设想耗用内存(包涵分享库占用的内部存款和储蓄器)

      猎豹CS6SS – Resident Set Size 实际利用物理内部存储器(包蕴分享库占用的内部存款和储蓄器)

      PSS – Proportional Set Size 实际运用的物理内部存款和储蓄器(比例分配分享库占用的内部存款和储蓄器)

      USS – Unique Set Size 进程独自占用的大要内部存款和储蓄器(不包括分享库占用的内存)

smem工具安装

  首先去官网2020欧洲杯官方投注-2020欧洲杯官方投注网址, 下载对应的smem安装包,最近新型的本子为smem-1.4.  下边设置是在库罗德HEL 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

2020欧洲杯官方投注-2020欧洲杯官方投注网址 1

3: 参数-p 查看耗用内部存款和储蓄器意况的比重。

smem -p

2020欧洲杯官方投注-2020欧洲杯官方投注网址 2

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: 参数-陆风X8REALMEM,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)来排序.

2020欧洲杯官方投注-2020欧洲杯官方投注网址 3

8: 参数-r 平日与参数-s结合使用,表示反转排序(从升序改为降序)

2020欧洲杯官方投注-2020欧洲杯官方投注网址 4

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 

   4: [[email protected] tmp]# smem -M mysql -p

   5:   PID User     Command                         Swap      USS      PSS      RSS 

   6:  4172 mysql    /usr/sbin/mysqld --basedir=    0.00%    0.38%    0.38%    0.38% 

   7: [[email protected] tmp]# 

2020欧洲杯官方投注-2020欧洲杯官方投注网址 5

10:参数-U 按客商过滤音信

别的一些参数怎样展示条状图或饼状图的效果,个人以为那些参数的用处非常小,首先服务器通常都并未有安装桌面系统,都以命令分界面维护、管理。不可能转移相关图片。其次服务器有桌面系统,也必要设置相关信任包,十分麻烦。除非是为着转换报告需求。

    Read data from capture tarball smem --source capture.tar.gz

    Show a bar chart labeled by pid smem --bar pid -c "pss uss"

    Show a pie chart of RSS labeled by name smem --pie name -s rss

正文永恒更新链接地址:

smem工具介绍 smem是Linux系统上的豆蔻梢头款可以生成多样内存耗用报告的命令行工具。与现成工具不一致的是smem可以...

   The swapped out portion of a task’s total virtual memory image.

     VSS – Virtual Set Size 虚构耗用内部存储器(蕴含共享库占用的内部存款和储蓄器)

** 

大要内部存款和储蓄器和设想内部存款和储蓄器

pmap命令查看

         

 

# ps -ef | grep tomcat

 

     

  

 

 

自然也足以应用shift+m 或大写键M 让top命令按字段%MEM来排序,当然你也足以按VIRT(虚构内部存款和储蓄器)、SWAP(进程使用的SWAP空间)、RES(实际运用物理内部存款和储蓄器,当然这里由于涉及分享内部存款和储蓄器缘故,你看见的实际内部存款和储蓄器相当大)

 

PSS – Proportional Set Size 实际接收的情理内部存款和储蓄器(比例抽成分享库占用的内部存款和储蓄器)

 

 

cached是作为page cache的内部存款和储蓄器, 文件系统的cache。你读写文件的时候,Linux内核为了巩固读写质量与进度,会将文件在内存中举行缓存,那部分内部存储器便是Cache Memory(缓存内部存款和储蓄器)。就算你的程序运维甘休后,Cache Memory也不会活动释放。那就能导致你在Linux系统中前后相继往往读写文件后,你会开采可用物理内部存款和储蓄器会少之又少。其实那缓存内存(Cache Memory)在您须要利用内部存款和储蓄器的时候会自行释放,所以您不要忧虑未有内部存款和储蓄器可用

 

Cached is the size of the Linux page cache, minus the memory in the swap cache, which is represented by SwapCached (thus the total page cache size is Cached + SwapCached). Linux performs all file I/O through the page cache. Writes are implemented as simply marking as dirty the corresponding pages in the page cache; the flusher threads then periodically write back to disk any dirty pages. Reads are implemented by returning the data from the page cache; if the data is not yet in the cache, it is first populated. On a modern Linux system, Cached can easily be several gigabytes. It will shrink only in response to memory pressure. The system will purge the page cache along with swapping data out to disk to make available more memory as needed.

 

 

 

 

共享内部存款和储蓄器是经过间通讯中最简易的方法之豆蔻梢头。分享内部存款和储蓄器允许七个或更加多进度访谈同一块内部存款和储蓄器,就就像malloc() 函数向不一样进度再次回到了指向同一个大要内存区域的指针。当三个进度改造了那块地点中的内容的时候,其余进度都会开掘到那个。其实所谓分享内部存款和储蓄器,正是几个过程间协作地应用相似段物理内部存款和储蓄器空间,它是透过将黄金时代律段物理内部存款和储蓄器映射到分裂进程的设想空间来促成的。由于映射到差异进程的伪造空间中,不一样进度可以直接选取,无需像新闻队列那样举行理并答复制,所以分享内部存款和储蓄器的频率相当高。分享内部存款和储蓄器能够由此mmap()映射普通文书编写制定来得以达成,也得以System V分享内部存储器机制来落到实处,System V是因而粲焕特殊文件系统shm中的文件落实进度间的分享内部存款和储蓄器通讯,也正是说各样分享内部存款和储蓄器区域对应非常文件系统shm中的一个文本。

 

     

 

Cached is the size of the page cache. Buffers is the size of in-memory block I/O buffers. Cached matters; Buffers is largely irrelevant.

 

 

** 

** 

%MEM -- Memory usage (RES)

 

2020欧洲杯官方投注-2020欧洲杯官方投注网址 6

 

       

#smem -rs pss

 

 

 

 

 

在Linux中,有许多限令或工具查看内存使用处境,前天我们来探视怎样查看进度消耗、占用的内部存款和储蓄器情况,Linux的内部存款和储蓄器管理和相关概念要比Windows复杂一些。以前,大家须求领会一下Linux系统上面关于内部存款和储蓄器的专项使用名词和职业术语概念:

 

是否有人会以为奇怪,为何%MEM这一列的值加起来会胜出100啊? 那一个是因为这里总计的时候满含了分享内部存款和储蓄器的来由,别的由于分享内部存款和储蓄器的由来,你看看进度使用VIRT或RES都相当的高。由于超越二成的轮廓内部存款和储蓄器平时在多少个应用程序之间分享,名叫实际利用物理内存(RSS,对应top命令里面包车型大巴RES)的这一个标准的内部存款和储蓄器耗用测量指标会大大高估内部存款和储蓄器耗用状态。

 

2020欧洲杯官方投注-2020欧洲杯官方投注网址 7

至于smem命令,这里不做牵线,直接参照他事他说加以考察链接Linux监察和控制工具介绍种类——smem

在Linux中时常发掘没事的内存超少,仿佛有所的内部存款和储蓄器都被消耗殆尽了,表面上看是内部存款和储蓄器缺乏用了,超级多新手看见内部存款和储蓄器被“消耗殆尽”特别忐忑,其实那些是因为Linux系统将空闲的内部存储器用来做磁盘文件数量的缓存。这些导致您的系统看起来处于内部存款和储蓄器极度殷切的情景。但是实际上不是如此。这一个分裂于Windows的内部存储器管理。Linux会利用闲暇的内存来做cached & buffers。

 

 

Buffers are in-memory block I/O buffers. They are relatively short-lived. Prior to Linux kernel version 2.4, Linux had separate page and buffer caches. Since 2.4, the page and buffer cache are unified and Buffers is raw disk blocks not represented in the page cache—i.e., not file data. The Buffers metric is thus of minimal importance. On most systems, Buffers is often only tens of megabytes.

 

     

 

 

 

 

 

Linux的buffers与cached

PSS(Proportional set size)全数应用某分享库的主次均分该分享库占用的内部存款和储蓄器时,各类进程占用的内部存款和储蓄器。分明全部进程的PSS之和正是系统的内部存款和储蓄器使用量。它会改正确一些,它将分享内部存款和储蓄器的轻重进行平均后,再分摊到各进程上去。

 

smem命令查看

 

** 

 

# ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

oracle   32147 11.0 51.2 13252080 12666320 ?   Rs   Aug24 163:16 ora_s000_SCM2

oracle   32149 14.2 50.9 13250344 12594264 ?   Ss   Aug24 210:41 ora_s001_SCM2

oracle   32153  4.2 49.6 13250820 12279432 ?   Ss   Aug24  62:27 ora_s003_SCM2

oracle   32155  2.5 48.6 13250268 12040732 ?   Ss   Aug24  38:21 ora_s004_SCM2

oracle   32157  1.2 44.5 13250296 11011708 ?   Ss   Aug24  18:31 ora_s005_SCM2

oracle   32151  2.7 39.7 13350436 9829944 ?    Ss   Aug24  41:18 ora_s002_SCM2

oracle   32159  0.5 38.9 13250704 9625764 ?    Ss   Aug24   8:18 ora_s006_SCM2

oracle   32161  0.2 26.3 13250668 6507244 ?    Ss   Aug24   3:38 ora_s007_SCM2

oracle   32129  0.0 25.5 13299084 6324644 ?    Ss   Aug24   1:25 ora_dbw0_SCM2

oracle   32181  0.0 15.8 13250152 3913260 ?    Ss   Aug24   0:56 ora_s017_SCM2

oracle   32145  2.7 15.3 13255256 3786456 ?    Ss   Aug24  40:11 ora_d000_SCM2

oracle   32127  0.0 15.2 13248996 3762860 ?    Ss   Aug24   0:05 ora_mman_SCM2

oracle   32163  0.0 14.2 13250108 3525160 ?    Ss   Aug24   1:04 ora_s008_SCM2

oracle   32165  0.0  8.1 13250172 2007704 ?    Ss   Aug24   0:37 ora_s009_SCM2

oracle   32169  0.0  6.6 13250060 1656864 ?    Ss   Aug24   0:08 ora_s011_SCM2

oracle   32177  0.0  6.0 13250148 1498760 ?    Ss   Aug24   0:12 ora_s015_SCM2

oracle   32187  0.0  5.1 13250084 1267384 ?    Ss   Aug24   0:06 ora_s020_SCM2

oracle   32179  0.0  5.1 13250584 1280156 ?    Ss   Aug24   0:05 ora_s016_SCM2

oracle   32167  0.0  5.0 13250060 1248668 ?    Ss   Aug24   0:08 ora_s010_SCM2

oracle   32175  0.0  3.4 13250596 857380 ?     Ss   Aug24   0:03 ora_s014_SCM2

          

 

 

 

 

 

 

2020欧洲杯官方投注-2020欧洲杯官方投注网址 8

 

翻开进程占用的实际物理内部存储器(与smem看见实际物理内部存款和储蓄器大小有出入,这里解释一下:SIZE: 进度使用的地点空间, 若是进度映射了100M的内部存款和储蓄器, 进度的地点空间将报告为100M内部存款和储蓄器. 事实上, 那个分寸不是二个主次实际行使的内部存款和储蓄器数. 所以这里见到的内部存款和储蓄器跟smem看见的大小有出入)

python ps_mem.py

本文由2020欧洲杯官方投注-2020欧洲杯官方投注网址发布于win7,转载请注明出处:Linux 查看进度消耗内存情形总括

相关阅读