澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:Linux内部存款和储蓄器衡量

2019-05-25 作者:澳门新萄京官方网站   |   浏览(79)

 

%mem 内部存款和储蓄器使用率
virt 是虚拟内部存款和储蓄器
res是常驻内存
shr是共享内部存款和储蓄器

Linux监察和控制工具介绍体系——smem

smem工具介绍

    smem是Linux系统上的1款能够生成三种内部存款和储蓄器耗用报告的命令行工具。与存活工具分歧等的是smem能够告知实际应用的大意内部存款和储蓄器(PSS),那是1种更有意义的目的。能够衡量虚拟内部存款和储蓄器系统的库和应用程序所据有的内部存款和储蓄器数量。

鉴于大多数的物理内存平日在七个应用程序之间共享,名称为实际行使物理内部存款和储蓄器(奥德赛SS)的那一个正式的内部存储器耗用衡量指标会大大高估内部存款和储蓄器耗用状态。PSS那些参数而是度量了各类应用程序在各类共享内存区中的“公平分配”,给出了3个切合实际的权衡目的。

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),因而要标准的持筹握算3个进程实际行使的大意内部存储器就不是那么简单。只了解进度的虚拟内部存款和储蓄器大小也并不曾太大的用途,因为还是不能获得到骨子里分配的大意内部存款和储蓄器大小。

猎豹CS陆SS(Resident set size),使用top命令能够查询到,是最常用的内部存储器目标,表示经过占用的情理内部存储器大小。但是,将各进度的HavalSS值相加,常常会高于整个种类的内存消耗,那是因为奥迪Q5SS中富含了各进程间共享的内存。

PSS(Proportional set size)全部应用某共享库的次第均分该共享库占用的内存时,各样进程占用的内部存款和储蓄器。明显全体进度的PSS之和就是系统的内部存款和储蓄器使用量。它会更加准确一些,它将共享内部存储器的分寸举办平均后,再分摊到各进度上去。

USS(Unique set size )进程独自占用的内部存款和储蓄器,它是PSS中温馨的一些,它只计算了经过独自占用的内部存款和储蓄器大小,不蕴含别的共享的有个别。

      VSS – Virtual Set Size 虚拟耗用内部存款和储蓄器(包括共享库占用的内部存款和储蓄器)

      CR-VSS – Resident Set Size 实际利用物理内部存款和储蓄器(包罗共享库占用的内部存款和储蓄器)

      PSS – Proportional Set Size 实际使用的情理内部存款和储蓄器(比例分红共享库占用的内部存款和储蓄器)

      USS – Unique Set Size 进程独自占用的物理内存(不带有共享库占用的内部存款和储蓄器)

smem工具安装

  首先去官网 下载对应的smem安装包,最近新星的本子为smem-1.四.  上边设置是在HighlanderHEL 5.七上设置,分化版本系统、以及区别安装格局都有一部分有别于。

   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

一:无参数时显得全数进度的内部存款和储蓄器使用状态

二:参数-u 突显每一种用户所耗用的内部存款和储蓄器总的数量

smem -u

澳门新萄京官方网站 1

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

smem -p

澳门新萄京官方网站 2

四: 参数-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: 参数-劲客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)来排序.

澳门新萄京官方网站 3

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

澳门新萄京官方网站 4

玖:参数-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]# 

澳门新萄京官方网站 5

十:参数-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系统上的1款能够变动各个内部存款和储蓄器耗用报告的命令行工具。与存活工具不平等的是smem能够...

那是一篇关于Linux内部存款和储蓄器measuring的基础教程。除了free之外,大家得以因此/proc获得越来越多消息。它们是/proc下的mapssmapsstatm

smem工具介绍

在Linux中,有成千上万发令或工具查看内部存款和储蓄器使用情状,后日大家来看看哪些查看进度消耗、占用的内部存款和储蓄器情形,Linux的内部存款和储蓄器处理和有关概念要比Windows复杂一些。此前,大家要求精通一下Linux系统下边关于内部存款和储蓄器的专项使用名词和专门的职业术语概念:

top命令下按f键能够看来详细表达
* A: PID        = Process Id
* E: USER       = User Name
* H: PR         = Priority
* I: NI         = Nice value
* O: VIRT       = Virtual Image (kb)
* Q: RES        = Resident size (kb)
* T: SHR        = Shared Mem size (kb)
* W: S          = Process Status
* K: %CPU       = CPU usage
* N: %MEM       = Memory usage (RES)
* M: TIME       = CPU Time, hundredths
b: PPID       = Parent Process Pid
c: RUSER      = Real user name
d: UID        = User Id
f: GROUP      = Group Name
g: TTY        = Controlling Tty
j: P          = Last used cpu (SMP)
p: SWAP       = Swapped size (kb)
l: TIME       = CPU Time
r: CODE       = Code size (kb)
s: DATA       = Data Stack size (kb)
u: nFLT       = Page Fault count
v: nDRT       = Dirty Pages count
y: WCHAN      = Sleeping in Function
z: Flags      = Task Flags <sched.h>
* X: COMMAND    = Command name/line

'free' and /proc

    smem是Linux系统上的1款能够转移两种内部存款和储蓄器耗用报告的命令行工具。与存活工具不雷同的是smem能够告知实际行使的情理内部存储器(PSS),那是1种更有意义的目标。能够度量虚拟内部存款和储蓄器系统的库和应用程序所攻陷的内部存储器数量。

 

top命令下要查阅有个别用户运行的进度:先输入u,然后输入用户名,再回车

'free' 会呈现机器上的内部存款和储蓄器使用新闻。能实时追踪整个种类内部存储器的运用状态。

出于诸多的物理内部存款和储蓄器日常在八个应用程序之间共享,名字为实际行使物理内部存款和储蓄器(PAJEROSS)的那一个正式的内部存储器耗用衡量指标会大大高估内部存款和储蓄器耗用状态。PSS这几个参数而是衡量了各样应用程序在种种共享内部存款和储蓄器区中的“公平分配”,给出了二个切合实际的衡量指标。

 

VIRT:virtual memory usage。Virtual那一个词很神,一般解释是:virtual adj.虚的, 实质的, [物]澳门新萄京官方网站:Linux内部存款和储蓄器衡量,查看进度消耗内部存款和储蓄器景况总括。实惠的, 事实上的。到底是虚的依旧实的?让谷歌给Define之后,将就精晓有个别,便是那东西还是非物质的,不过有作用的,不产生在实事求是世界的,发生在软 件世界的等等。那个内存使用正是一个选拔据有的地点空间,只是要应用程序须要的,就全算在此处,而不论是它真的用了未有。写程序怕出错,又无视占用的时 候,多开点内存也是很健康的。
RES:resident memory usage。常驻内部存储器。那一个值正是该应用程序真的选拔的内部存款和储蓄器,但还或者有多少个小标题,1是有一点东西恐怕位于调换盘上了(SWAP),二是多少内部存储器大概是共享的。
SHR:shared memory。共享内存。就是说那一块内部存款和储蓄器空间有希望也被别的应用程序使用着;而Virt - Shr就像便是其1程序所供给的还要未有共享的内部存款和储蓄器空间。
DATA:数据占用的内部存款和储蓄器。要是top未有展现,按f键可以来得出来。那壹块是真的的该程序供给的数量空间,是实在在运维中要利用的。

$ free

             total       used       free     shared    buffers     cached

Mem:        507564     481560      26004          0      68888     185220

-/  buffers/cache:     227452     280112

Swap:      2136604     105168    2031436

smem有大多效用特色:

轮廓内部存款和储蓄器和虚拟内部存款和储蓄器

============================================

除去free命令之外,/proc/meminfo能够提供越多的音信。以下就是三个例子: 512 Mb RAM, 运营在 Linux 2.陆.三:

系统轮廓列表

style="font-family: 大篆; color: #000000;">按进度、映射和用户列表

style="font-family: 石籀文; color: #000000;">按用户、映射或用户过滤

style="font-family: 楷体; color: #000000;">来自五个数据源的可安顿列

style="font-family: 金鼎文; color: #000000;">可安顿的出口单位和比例

style="font-family: 大篆; color: #000000;">可陈设的题目和总的数量

style="font-family: 燕体; color: #000000;">从/proc读取活动数量

style="font-family: 甲骨文; color: #000000;">从目录镜像或通过压缩的打包文件读取数据快速照相

style="font-family: 陶文; color: #000000;">面向嵌入式系统的轻型捕获工具

style="font-family: 陶文; color: #000000;">内置的图样生成作用

 

top里面描述进度内部存款和储蓄器使用量的数量来源于/proc/$pid/statm这一个文件。通过观看kernel的代码就能够弄清楚SHCR-V,VIRT和RES那一个数值的实际意思。

$ cat /proc/meminfo

MemTotal:       507564 kB

MemFree:         26004 kB

Buffers:         68888 kB

Cached:         185220 kB

SwapCached:      29348 kB

Active:         342488 kB

Inactive:        32092 kB

HighTotal:           0 kB

HighFree:            0 kB

LowTotal:       507564 kB

LowFree:         26004 kB

SwapTotal:     2136604 kB

SwapFree:      2031436 kB

Dirty:              88 kB

Writeback:           0 kB

Mapped:         165648 kB

Slab:            73212 kB

Committed_AS:   343172 kB

PageTables:       2644 kB

VmallocTotal:   524212 kB

VmallocUsed:      7692 kB

VmallocChunk:   516328 kB

smem的系统供给

大意内部存款和储蓄器:就是系统硬件提供的内部存款和储蓄器大小,是真正的内部存款和储蓄器,一般叫做内部存款和储蓄器条。也叫随机存取存款和储蓄器(random access memory,RAM)又叫做“随机存款和储蓄器”,是与CPU间接调换数据的中间存款和储蓄器,也叫主存(内部存款和储蓄器)。

Linux通过一个称呼 task_statm 的函数来回到经过的内存使用情形

澳门新萄京官方网站:Linux内部存款和储蓄器衡量,查看进度消耗内部存款和储蓄器景况总括。衡量用户进度的内存使用:

style="font-family: 石籀文; color: #000000;">系统基本为二.6.27之上

style="font-family: 燕书; color: #000000;">Python版本必须为2.四或上述

style="font-family: 石籀文; color: #000000;">依赖matplotlib库生成图表(可选的,自动物检疫查测试)信赖matplotlib,是因为smem除了一般的文本消息告知外,smem 也足以生成条状或饼状图。

 

int task_statm(struct mm_struct *mm, int *shared, int *text,
               int *data, int *resident)
{
        *shared = get_mm_counter(mm, file_rss);
        *text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK))
                                                           >> PAGE_SHIFT;
        *data = mm->total_vm - mm->shared_vm;
        *resident = *shared get_mm_counter(mm, anon_rss);
        return mm->total_vm;
}
上面包车型大巴代码中shared就是page cache里面其实采纳了的情理内部存储器的页数,text是代码所攻下的页
数,data是总虚拟内部存款和储蓄器页数减去共享的杜撰内部存款和储蓄器页数,resident是具备在应用的情理内存的页
数。最后回到的mm->total_vm是经过虚拟内部存款和储蓄器的寻址空间尺寸。

'ps' 关于内部存款和储蓄器音讯表明

 'ps' 能够提供内存新闻意况。比如:

相应的英文最初的文章如下:

虚拟内部存款和储蓄器:相对于物理内部存款和储蓄器,在Linux下还应该有3个虚拟内部存款和储蓄器的定义,虚拟内部存款和储蓄器便是为了满意物理内部存款和储蓄器的贫乏而建议的国策,它是接纳磁盘空间虚拟出的1块逻辑内部存款和储蓄器,用作虚拟内部存储器的磁盘空间被称作交流空间(Swap Space)。Linux会在物理内部存款和储蓄器不足时,使用虚拟内部存款和储蓄器,内核会把一时不要的内部存款和储蓄器块音信写到虚拟内部存款和储蓄器,那样大要内部存储器就获得了释放,那块儿内部存款和储蓄器就足以用来其它指标,而急需用到那些内容的时候,这几个新闻就能够被重复从虚拟内部存款和储蓄器读入物理内部存款和储蓄器。

函数get_mm_counter并不会做怎么着划算,它的效用是保险数值读取的原子性。

 BJATCA01sta1:/proc/3105(8)#ps -p 3129 -o pid,rss,vsz,comm

   PID   RSS   VSZ COMMAND

  3129 23100 213664 GAM

·          %Mem - 内部存款和储蓄器使用比例

·         VSZ - Virtual Size

·         RSS - Resident Set Size

·         SIZE - Equivalent to VSZ

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.

 

上面包车型地铁数值最后会通过 procfs输出 到/proc/$pid/statm中去。他们与top呈现的数值对应涉及如下。

'top' 展现消息可参见 'man top':

·          %MEM -- Memory usage (RES)            进度近期采纳的大意内部存储器。

·         VIRT -- Virtual Image (kb)          进程整个virtual memory空间, VIRT = SWAP RES

·         SWAP -- Swapped size (kb)    virtual memory沟通到disk可能尚未加载到轮廓内部存款和储蓄器里的上空。

·         RES -- Resident size (kb)  进度驻留在内存里面包车型大巴内部存款和储蓄器大小,  RES = CODE DATA.

·         CODE -- Code size (kb)           加载到内存里面包车型地铁可实行文件代码

·         DATA -- Data Stack size (kb) 加载到内存里面包车型地铁数码和栈

·         SH路虎极光 -- Shared Mem size (kb) 共享内部存款和储蓄器大小

·         nDRT -- Dirty Pages count       页面已经修改只是还尚无保存到disk的数码。

/proc info

越来越多消息方可应用命令:'man proc'

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.

 

SHR: shared
RES: resident
VIRT: mm->total_vm
CODE: code
DATA: data

/proc/<pid>/statm

/proc/<pid>/statm fields: columns are (in pages):

total program size|

resident set size|

shared pages|

text (code) |

data/stack |

library |

dirty pages |

Here an example: 693 406 586 158 0 535 0

smem has many features:

Linux的buffers与cached

=======================================

/proc/<pid>/status

/proc/<pid>/status fields:

·                     Vm Size: 2772 kB

·                     Vm Lck: 0 kB - ???

·                     Vm RSS: 1624 kB

·                     Vm Data: 404 kB

·                     Vm Stk: 24 kB

·                     Vm Exe: 608 kB

·                     Vm Lib: 1440 kB

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

 

o: VIRT (Virtual Image) - 进度使用的总虚拟内存 (virtual memory) 大小,包含进度的程序码、资料和共享程序库再增加被置换 (swap out) 的半空中。VIRT = SWAP RES
p: SWAP (Swapped size) - 进度被换来的虚拟内部存款和储蓄器空间大小。
q: RES (Resident size) - 进度非被换到的实体内部存款和储蓄器大小。RES = CODE DATA
r: CODE' (Code size) - 进程的程序码在实体内部存款和储蓄器佔用空间大小,亦叫作 text resident set (TTiguanS)。
s: DATA (Data Stack size) - 进度佔用实体内部存款和储蓄器中的非程序码部份大小,亦叫作 data resident set (D奥迪Q3S)。
t: SH途胜 (Shared Mem size) - 进度使用的共享内部存款和储蓄器大小,即能够和别的进度共享的内部存款和储蓄器空间。
n: %MEM (Memory usage) - 进度佔用实体内存大小对系统总实体内部存款和储蓄器大小的比重,以百分比显示。

/proc/<pid>/maps

maps展现全数共享库映射到进程地址空间的详细意况。Example:

$ cat /proc/25042/maps

08048000-080e0000 r-xp 00000000 03:05 196610     /bin/bash

080e0000-080e6000 rw-p 00097000 03:05 196610     /bin/bash

080e6000-08148000 rwxp 00000000 00:00 0

40000000-40016000 r-xp 00000000 03:05 147471     /lib/ld-2.3.3.so

40016000-40017000 rw-p 00015000 03:05 147471     /lib/ld-2.3.3.so

40017000-40018000 rw-p 00000000 00:00 0

40018000-40019000 r--p 00000000 03:05 184090     /usr/share/locale/en_US/LC_IDENTIFICATION

40019000-4001a000 r--p 00000000 03:05 184089     /usr/share/locale/en_US/LC_MEASUREMENT

4001a000-4001b000 r--p 00000000 03:05 184083     /usr/share/locale/en_US/LC_TELEPHONE

4001b000-4001c000 r--p 00000000 03:05 184091     /usr/share/locale/en_US/LC_ADDRESS

4001c000-4001d000 r--p 00000000 03:05 184086     /usr/share/locale/en_US/LC_NAME

4001d000-4001e000 r--p 00000000 03:05 184084     /usr/share/locale/en_US/LC_PAPER

4001e000-4001f000 r--p 00000000 03:05 184088     /usr/share/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES

4001f000-40020000 r--p 00000000 03:05 184087     /usr/share/locale/en_US/LC_MONETARY

40020000-40026000 r--p 00000000 03:05 183689     /usr/share/locale/ISO-8859-1/LC_COLLATE

40026000-40027000 r--p 00000000 03:05 184082     /usr/share/locale/en_US/LC_TIME

40027000-4002a000 r-xp 00000000 03:05 147459     /lib/libtermcap.so.2.0.8

4002a000-4002b000 rw-p 00002000 03:05 147459     /lib/libtermcap.so.2.0.8

4002b000-4002c000 rw-p 00000000 00:00 0

4002c000-4002e000 r-xp 00000000 03:05 147482     /lib/libdl-2.3.3.so

4002e000-4002f000 rw-p 00001000 03:05 147482     /lib/libdl-2.3.3.so

4002f000-40171000 r-xp 00000000 03:05 147511     /lib/tls/libc-2.3.3.so

40171000-40174000 rw-p 00142000 03:05 147511     /lib/tls/libc-2.3.3.so

40174000-40177000 rw-p 00000000 00:00 0

40177000-40178000 r--p 00000000 03:05 184085     /usr/share/locale/en_US/LC_NUMERIC

40178000-401a4000 r--p 00000000 03:05 183688     /usr/share/locale/ISO-8859-1/LC_CTYPE

401a4000-401a5000 r-xp 00000000 03:05 180462     /usr/lib/gconv/ISO8859-1.so

401a5000-401a6000 rw-p 00001000 03:05 180462     /usr/lib/gconv/ISO8859-1.so

401b3000-401bd000 r-xp 00000000 03:05 147492     /lib/libnss_files-2.3.3.so

401bd000-401be000 rw-p 00009000 03:05 147492     /lib/libnss_files-2.3.3.so

bfffa000-c0000000 rwxp ffffb000 00:00 0

ffffe000-fffff000 ---p 00000000 00:00 0

澳门新萄京官方网站 6

smem has a few requirements:

在Linux中有的时候开采没事的内部存款和储蓄器非常少,就好像有着的内存都被消耗殆尽了,表面上看是内部存款和储蓄器远远不足用了,诸多新手看到内部存款和储蓄器被“消耗殆尽”极度令人不安,其实这一个是因为Linux系统将空闲的内部存款和储蓄器用来做磁盘文件数量的缓存。这几个导致你的系统看起来处于内部存储器极其火急的场景。不过实际不是如此。那几个差异于Windows的内部存款和储蓄器管理。Linux会利用闲暇的内部存款和储蓄器来做cached & buffers。

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),由此要准确的测算多少个历程实际采用的情理内部存款和储蓄器就不是那么简单。只晓得进度的虚拟内部存款和储蓄器大小也并从未太大的用途,因为依然不能够获取到实在分配的情理内部存款和储蓄器大小。

 

CR-VSS(Resident set size),使用top命令能够查询到,是最常用的内部存款和储蓄器指标,表示经过占用的轮廓内部存款和储蓄器大小。可是,将各进程的EnclaveSS值相加,常常会压倒整个类别的内存消耗,那是因为RubiconSS中包蕴了各进度间共享的内部存款和储蓄器。

buffers是指用来给块设备做的缓冲大小(块设备的读写缓冲区),它只记录文件系统的metadata以及 tracking in-flight pages.

PSS(Proportional set size)全体应用某共享库的先后均分该共享库占用的内部存款和储蓄器时,每一种进度占用的内部存款和储蓄器。显著全部进度的PSS之和正是系统的内部存款和储蓄器使用量。它会改进确一些,它将共享内部存款和储蓄器的大大小小举办平均后,再分摊到各进度上去。

 

USS(Unique set size )进度独自占用的内部存款和储蓄器,它是PSS中自身的1对,它只总结了经过独自占用的内部存款和储蓄器大小,不分包其余共享的一些。

Buffers are associated with a specific block device, and cover caching of filesystem metadata as well as tracking in-flight pages. The cache only contains parked file data. That is, the buffers remember what's in directories, what file permissions are, and keep track of what memory is being written from or read to for a particular block device. The cache only contains the contents of the files themselves.

      VSS – Virtual Set Size 虚拟耗用内部存款和储蓄器(包括共享库占用的内部存款和储蓄器)

 

      福特ExplorerSS – Resident Set Size 实际运用物理内部存款和储蓄器(包罗共享库占用的内部存款和储蓄器)

  

      PSS – Proportional Set Size 实际利用的大意内部存款和储蓄器(比例分配共享库占用的内存)

cached是作为page cache的内部存款和储蓄器, 文件系统的cache。你读写文件的时候,Linux内核为了增加读写品质与进程,会将文件在内部存储器中开始展览缓存,那有个别内部存款和储蓄器便是Cache Memory(缓存内部存储器)。尽管你的程序运维结束后,Cache Memory也不会自动释放。这就能产生您在Linux系统中等射程序往往读写文件后,你会开掘可用物理内部存款和储蓄器会非常的少。其实那缓存内部存款和储蓄器(Cache Memory)在你必要使用内部存款和储蓄器的时候会活动释放,所以您不要忧郁未有内部存款和储蓄器可用

      USS – Unique Set Size 进度独自占用的物理内部存款和储蓄器(不带有共享库占用的内部存款和储蓄器)

澳门新萄京官方网站, 

smem工具安装

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.

  首先去官网 下载对应的smem安装包,近来时尚的本子为smem-1.肆.  下边设置是在帕杰罗HEL 五.七上安装,差异版本系统、以及分裂安装情势都有局部组别。

 

   1: [root@DB-Server 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: [root@DB-Server tmp]# cd smem-1.4

   9: [root@DB-Server smem-1.4]# ls

  10: COPYING  smem  smem.8  smemcap.c

  11: [root@DB-Server smem-1.4]# cp /tmp/smem-1.4/smem  /usr/bin

  12: [root@DB-Server smem-1.4]# chmod  x /usr/bin/smem

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.

smem工具使用

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.

查阅smem命令的相干赞助消息

 

   1: [root@DB-Server 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

 

一:无参数时展现全数进程的内部存储器使用情况

Linux共享内部存款和储蓄器

二:参数-u 呈现每一个用户所耗用的内部存款和储蓄器总的数量

 

smem -u

共享内部存储器是经过间通讯中最简便的秘技之1。共享内部存款和储蓄器允许三个或愈来愈多进程访问同一块内存,就好似 malloc() 函数向不一致进程再次回到了指向同1个物理内部存款和储蓄器区域的指针。当3个进度更动了那块地点中的内容的时候,别的进度都会意识到那些。其实所谓共享内部存储器,正是八个经过间协同地使用同样段物理内部存款和储蓄器空间,它是经过将同1段物理内部存款和储蓄器映射到区别进度的虚构空间来贯彻的。由于映射到不相同进程的虚拟空间中,不一致进度能够直接接纳,不须要像新闻队列那样实行复制,所以共享内部存款和储蓄器的成效异常高。共享内部存款和储蓄器能够透过mmap()映射普通文书编写制定来兑现,也足以System V共享内部存款和储蓄器机制来贯彻,System V是通过照射特殊文件系统shm中的文件贯彻进度间的共享内部存款和储蓄器通讯,相当于说各类共享内部存储器区域对应特别文件系统shm中的一个文本。

澳门新萄京官方网站 7

 

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

 

smem -p

其余,大家还必须了然RubiconSS、PSS、USS等有关概念:

澳门新萄京官方网站 8

 

4: 参数-w 查看系统内部存款和储蓄器使用情状

     VSS – Virtual Set Size 虚拟耗用内存(包涵共享库占用的内部存款和储蓄器)

   1: [root@DB-Server01 ~]# 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: [root@DB-Server01 ~]# 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% 

     

五: 参数-福睿斯REALMEM,REALMEM这么些值是指物理内存数量。此参数能够让smem在全体连串(-w)的出口中开掘固件/硬件所耗用的内部存款和储蓄器数量(比较上下就可以发掘,注意firmware/hardware)

福睿斯SS – Resident Set Size 实际上使用物理内部存款和储蓄器(包罗共享库占用的内部存款和储蓄器)

   1: [root@DB-Server01 ~]# 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 用来呈现要求呈现的列。

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

   1: [root@DB-Server01 ~]# 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 

     

七: 参数-s 依据某1列(比如 rss)来排序.

USS – Unique Set Size 进度独自占用的大意内部存储器(不包蕴共享库占用的内部存款和储蓄器)

澳门新萄京官方网站 9

 

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

凯雷德SS(Resident set size),使用top命令能够查询到,是最常用的内部存款和储蓄器指标,表示经过占用的情理内部存款和储蓄器大小。不过,将各进度的ENCORESS值相加,平日会超过整个系统的内存消耗,那是因为奥迪Q7SS中带有了各进程间共享的内部存款和储蓄器。

澳门新萄京官方网站 10

 

9:参数-M 过滤相关进度。Show processes filtered by mapping

PSS(Proportional set size)全体应用某共享库的次序均分该共享库占用的内部存款和储蓄器时,每种进程占用的内存。显明全部进度的PSS之和便是系统的内部存款和储蓄器使用量。它会更标准一些,它将共享内部存款和储蓄器的轻重缓急举办平均后,再分摊到各进程上去。

   1: [root@DB-Server tmp]# smem -M mysql

   2:   PID User     Command                         Swap      USS      PSS      RSS 

   3:  4172 mysql    /usr/sbin/mysqld --basedir=        0     3924     3924     3924 

   4: [root@DB-Server 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: [root@DB-Server tmp]# 

 

澳门新萄京官方网站 11

USS(Unique set size )进程独自占用的内部存款和储蓄器,它是PSS中协和的片段,它只计算了经过独自占用的内部存款和储蓄器大小,不含有别的共享的1对。

拾:参数-U 按用户过滤信息

     

除此以外一些参数怎么样展示条状图或饼状图的功力,个人认为那个参数的用途相当的小,首先服务器一般都未曾安装桌面系统,都以命令界面维护、管理。不大概转移相关图片。其次服务器有桌面系统,也亟需设置相关重视包,极其艰难。除非是为着转移报告须要。

          

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

据此上面介绍的授命,有个别查看进程的虚拟内部存款和储蓄器使用,有个别是查看进度的昂科拉SS或实际物理内部存款和储蓄器。在叙述的时候,我们会标注那个音讯。

    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

 

本文永远更新链接地址:http://www.linuxidc.com/Linux/2015-12/126810.htm

 

澳门新萄京官方网站 12

top命令查看

 

施行top命令后,实行SHIFT F ,能够选用按某列排序,比如选择n后,就能够按字段%MEM排序

 

澳门新萄京官方网站 13

 

 

当然也足以应用shift m 或大写键M 让top命令按字段%MEM来排序,当然你也可以按VIRT(虚拟内部存款和储蓄器)、SWAP(进度使用的SWAP空间)、RES(实际利用物理内部存款和储蓄器,当然这里由于涉及共享内部存款和储蓄器缘故,你看到的实际上内部存款和储蓄器极大)

 

 

%MEM -- Memory usage (RES)

 

     A task's currently used share of available physical memory

     

VIRT -- virtual memory 

   

    The  total  amount  of virtual memory used by the task.  It includes all code, data and shared libraries plus pages that have been swapped out. (Note: you can define the STATSIZE=1 environment variable and the VIRT will be calculated from the /proc/#/state VmSize field.)

 

    VIRT = SWAP RES

 

SWAP  --  Swapped size (kb)

 

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

 

RES  --  Resident size (kb)

       

    RES = CODE DATA.

 

         

 

是否有人会感觉奇异,为何%MEM那一列的值加起来会超过十0吧? 那个是因为此地总计的时候包括了共享内部存款和储蓄器的原委,别的是因为共享内部存款和储蓄器的原由,你见到进度使用VIRT或RES都相当高。由于当先13分之伍的情理内部存款和储蓄器平时在两个应用程序之间共享,名称为实在运用物理内部存款和储蓄器(RAV4SS,对应top命令里面包车型大巴RES)的那几个正式的内部存款和储蓄器耗用衡量目的会大大高估内部存款和储蓄器耗用状态。

 

澳门新萄京官方网站 14

 

 

 

ps命令查看

 

 

 

选拔ps命令搜索占用内部存款和储蓄器财富最多的21个进度(数量得以擅设)

 

 

# 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

 

 

#ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

 

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

 

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf(".2f Mb ",hr) } { for ( x=4 ; x<=NF ; x   ) { printf("%s ",$x) } print "" }' |cut -d "" -f2 | cut -d "-" -f1

 

澳门新萄京官方网站 15

 

 

ps aux  | awk '{print $6/1024 " MBtt" $11}'  | sort -n

 

 

 

 

smem命令查看

 

 

有关smem命令,这里不做牵线,直接参谋链接Linux监察和控制工具介绍连串——smem

 

 

#smem -rs pss

 

澳门新萄京官方网站 16

** 

** 

** 

** 

pmap命令查看

 

 

# ps -ef | grep tomcat

# pmap 32341

 

澳门新萄京官方网站 17

 

# pmap -x  32341

 

The -x option can be used to provide information about the memory allocation and mapping types per mapping. The amount of resident, non-shared anonymous, and locked memory is shown for each mapping。

 

澳门新萄京官方网站 18

 

 

 

 

python脚本查看

 

 

英特网有个python脚本计算程序或进度的内部存款和储蓄器使用状态,地址位于

 

python ps_mem.py

 

澳门新萄京官方网站 19

 

 

[root@mylnx03 ~]# python ps_mem.py -h

Usage: ps_mem [OPTION]...

Show program core memory usage

 

  -h, -help                   Show this help

  -p <pid>[,pid2,...pidN]     Only show memory usage PIDs in the specified list

  -s, --split-args            Show and separate by, all command line arguments

  -t, --total                 Show only the total value

  -d, --discriminate-by-pid   Show by process rather than by program

  -S, --swap                  Show swap information

  -w <N>                      Measure and show process memory every N seconds

[root@mylnx03 ~]# python ps_mem.py  -p 32341

 Private      Shared  =  RAM used       Program

 

411.2 MiB   184.0 KiB = 411.4 MiB       java

---------------------------------

                        411.4 MiB

=================================

 

参照他事他说加以调查资料:

 

 

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:澳门新萄京官方网站:Linux内部存款和储蓄器衡量

关键词: