Linux查看过程内存占用和内存以状态

ps命令查看

 

    RES = CODE +
DATA.

翻开内存以状态

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.

LINUX进程内存占用查看方
(1)top
好一贯用top命令后,查看%MEM的情。可以选按进程查看或随用户查看,如想查看oracle用户之进程内存以情形的语句可以利用如下的一声令下:
$ top -u oracle

至于smem命令,这里不进行牵线,直接参考链接Linux监控工具介绍体系——smem

(4)free -m

 

(3)ps
一般来说例所示:
$ ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid’
其中rsz是凡实际上内存
$ ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid’ | grep oracle |
sort -nrk5
里rsz为实在内存,上例实现按内存排序,由好及有些

行top命令后,执行SHIFT
+F ,可以选用听从某列排序,例如选取n后,就会见仍字段%MEM排序

 

python
ps_mem.py

 

 

(2)pmap
能够按照进程查看过程有关音信占的内存情况,(进程号可以经ps查看)如下所示:
$ pmap -d 14596

 

 

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

 

 

pmap命令查看

 

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

 

#
ps -ef | grep tomcat

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)

 

     VSS

Virtual Set Size 虚拟耗用内存(包含一块享库占用的内存)

 

查阅过程占用的其实物理内存(与smem看到实际物理内存大小有出入,这里解释一下:SIZE:
进程使的地方空间, 倘若进程映射了100M的内存,
进程的地址空间将晓也100M内存. 事实上,
这一个分寸不是一个顺序实际行使的内存数.
所以这里看看的内存跟smem看到的大大小小来出入)

 

图片 1

 

 

https://stackoverflow.com/questions/131303/how-to-measure-actual-memory-usage-of-an-application-or-process

 

USS –
Unique Set Size 进程独自占用的情理内存(不包含一块享库占用的内存)

RSS –
Resident Set Size 实际上使用物理内存(包含一块享库占用的内存)

         

     

# pmap -x  32341

#
pmap 32341

共享内存是经过之中通信中极其简易的艺术有。共享内存允许六只或又多进程看同片内存,就似
malloc()函数为不同进程重返了负于与一个大体内存区域的指针。当一个经过改变了这块地方被之始末之时候,另外进程都会晤意识到是。其实所谓共享内存,就是大半独过程中共地行使同一段物理内存空间,它是因而以同段物理内存映射到不同进程的杜撰空间来贯彻之。由于映射到不同进程的虚拟空间中,不同进程可以一向下,不欲像音信队列这样举办复制,所以共享内存的效用很高。共享内存可以经mmap()映射普通文书编制来落实,也堪System
V共享内存机制来实现,System
V是通过炫耀特殊文件系统shm中的文件落实进程之中的共享内存通信,也就是说每个共享内存区域对承诺优异文件系统shm中之一个文件。

 

 

 

 

** 

其它,咱们尚非得通晓RSS、PSS、USS等相关概念:

VIRT
— virtual memory 

图片 2

     

大体内存和虚拟内存

网上发只python脚论统计程序如故进程的内存以状况,地址在https://raw.githubusercontent.com/pixelb/ps\_mem/master/ps\_mem.py

 

以Linux中,有为数不少下令或工具查看内存以境况,明日我们来探视哪些查看过程消耗、占用的内存意况,Linux的内存管理及系概念而较Windows复杂一些。以前,大家得通晓一下Linux系统下边关于内存的专用名词和专业术语概念:

虚拟内存:相对于物理内存,在Linux下还时有暴发一个虚拟内存的定义,虚拟内存就是为满意物理内存的不足而提议的政策,它是采用磁盘空间虚拟出底一致片逻辑内存,用作虚拟内存的磁盘空间被叫做交流空间(Swap
Space)。Linux会在大体内存不足时,使用虚拟内存,内核会拿小不要的内存块音讯写及虚拟内存,这样大体内存就落了放,这块儿内存就好用来此外目标,而用用到这么些情节的时,这几个信就是会师受重复于虚拟内存读入物理内存。

 

 

 

 

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.

       

 

 

 

 

ps
aux  | awk
‘{print $6/1024 ” MB\t\t” $11}’  | sort -n

 

 

RES  —  Resident size
(kb)

 

 

 

 

** 

          

     

Linux共享内存

** 

http://www.cnblogs.com/kerrycode/p/5079319.html

 

 

物理内存:就是网硬件提供的内存大小,是实在的内存,一般叫内存条。也于随机存取存储器(random
access memory,RAM)又称之为“随机存储器”,是和CPU直接互换数据的内存储器,也深受主存(内存)。

本为可以应用shift+m
或大写键M
让top命令按字段%MEM来排序,当然你为堪按VIRT(虚拟内存)、SWAP(进程使的SWAP空间)、RES(实际行使物理内存,当然这里由于涉及共享内存缘故,你看来的骨子里内存非凡坏)

 

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

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.

     

    VIRT = SWAP +
RES

 

 

cached是当page
cache的内存,
文件系统的cache。你念写文件之时段,Linux内核为了加强读写性能与快,会拿文件于内存中展开缓存,这一部分内存就是Cache
Memory(缓存内存)。尽管你的程序运行停止晚,Cache
Memory也非会合自行释放。这即会导致您以Linux系统中先后往往读写文件后,你会见发现可用物理内存会很少。其实这缓存内存(Cache
Memory)在你得接纳内存的时段会活动释放,所以若不用担心无内存可用

python脚本查看

 

Linux的buffers与cached

 

 

 

 

是否有人会当奇怪,为何%MEM这同排列的值加起来会胜出100也?
这多少个是为此地总结的时刻包含了共享内存的因,此外由于共享内存的故,你看看进程使VIRT或RES都怪强。由于多数之物理内存通常以多独应用程序之间共享,名也实际使用物理内存(RSS,对诺top命令中的RES)的之专业的内存耗用衡量目的会大大高估内存耗用状态。

 

 

图片 3

 

 

 

     

 

 

 

 

** 

参考资料:

top命令查看

 

 

图片 4

 

 

 

 

 

 

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

用下介绍的命令,有些查看过程的虚拟内存使用,有些是翻开过程的RSS或实际物理内存。在描述的时刻,我们会见标注那么些信息。

[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

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

 

 

   

 

SWAP  —  Swapped size
(kb)

#smem
-rs pss

     A task’s currently
used share of available physical memory

# 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

 

 

 

图片 5

smem命令查看

 

 

 

 

 

 

 

 

 

以ps命令找有占用内存资源最多之20只经过(数量可以随便设置)

  

 

图片 6

 

https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py

PSS(Proportional
set
size)所有应用有旅享库的程序都分该联合享库占用的内存时,每个过程占用的内存。显明有进程的PSS之与不畏是系统的内存使用量。它谋面又确切一些,它用共享内存的轻重举办平均后,再分摊到各级进程上。

RSS(Resident
set
size),使用top命令可以查询及,是极致常用的内存目标,表示经过占用的情理内存大小。可是,将各进程的RSS值相加,经常会过整个类另外内存消耗,这是坐RSS中富含了各国进程之中共享的内存。

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。

 

    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.)

图片 7

 

 

 

 

 

buffers是据用来为块设备做的休养生息冲大小(块设备的朗读写缓冲区),它仅仅记录文件系统的metadata以及
tracking in-flight pages.

USS(Unique
set size
)进程独自占用的内存,它是PSS中温馨之有些,它只总结了经过独自占用的内存大小,不含其他共享的局部。

当Linux中时时发现没事的内存很少,似乎有着的内存都被消耗了了,表面上看是内存不够用了,很多新手看到内存为“消耗了”分外忐忑,其实那是坐Linux系统将空闲的内存用来做磁盘文件数量的休养存。这多少个导致你的系列看起处于内存非凡紧的观。不过事实上不是这样。这些分为Windows的内存管理。Linux会利用闲暇之内存来做cached
& buffers。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图