当前位置:首页 > 体育

linux查看内存使用情况 Linux 查看进程消耗内存情况总结

www.cnblogs.com/kerrycode/p/9568854.html

在Linux中,有很多检查内存使用情况的命令或工具。今天,我们来看看如何检查进程的内存消耗和占用。Linux的内存管理和相关概念比Windows复杂。在此之前,我们需要了解Linux系统下关于内存的专门术语和技术术语:

物理内存和虚拟内存

物理内存:是系统硬件提供的内存大小,是真实内存,一般称为内存库。也叫随机存取存储器(RAM),也叫“随机存取存储器”,是直接与CPU交换数据的内存,也叫主存。

虚拟内存:相对于物理内存,Linux中也有虚拟内存的概念。虚拟内存是为解决物理内存不足而提出的一种策略。它是在磁盘空之间虚拟化的一块逻辑内存,用作虚拟内存的磁盘空称为交换空间(Swap Space)。Linux在物理内存不足的时候会使用虚拟内存,内核会把暂时不用的内存块信息写入虚拟内存,这样物理内存就可以释放出来,用于其他用途。当需要这些内容时,信息将再次从虚拟内存读入物理内存。

Linux的缓冲区和缓存区

在Linux中,经常发现空空闲内存很少。似乎所有的记忆都耗尽了。表面上看,内存不够。很多新手看到记忆“耗尽”就很紧张。其实这是因为Linux系统使用空空闲内存缓存磁盘文件数据。这使得您的系统似乎处于非常紧急的内存情况。但事实并非如此。这不同于Windows的内存管理。Linux将使用空空闲内存来做缓存&: buffers .

缓冲区是指用于块设备的缓冲区大小(块设备的读/写缓冲区),它只记录文件系统的元数据和跟踪运行中的页面。

缓冲区与特定的块设备相关联,涵盖文件系统元数据的缓存以及跟踪运行中的页面。缓存只包含存放的文件数据。也就是说,缓冲区记住目录中的内容、文件权限,并跟踪特定块设备的内存读写情况。缓存只包含文件本身的内容。

cache是页面缓存的内存,也是文件系统的缓存。当您读写文件时,Linux内核会将文件缓存在内存中,以提高读写的性能和速度。这部分内存称为高速缓存。即使在您的程序运行后,缓存也不会自动释放。这会导致你在Linux系统中频繁读写文件,你会发现可用的物理内存会非常小。事实上,当您需要使用内存时,该缓存会自动释放,因此您不必担心没有可用的内存。

cache是页面缓存的大小。缓冲区是内存块输入/输出缓冲区的大小。缓存的事项;缓冲区在很大程度上是无关紧要的。

缓存是Linux页面缓存的大小,减去交换缓存中的内存,由交换缓存表示(因此总页面缓存大小为缓存+交换缓存)。Linux通过页面缓存执行所有文件I/ O。写入被实现为简单地将页面缓存中的相应页面标记为脏;然后,flusher线程会定期将任何脏页写回磁盘。读取是通过从页面缓存返回数据来实现的;如果数据尚未在缓存中,则首先填充它。在现代的Linux系统上,缓存很容易达到几千兆字节。它只会因记忆压力而缩小。系统将清除页面缓存,并将数据交换到磁盘,以根据需要提供更多可用内存。

缓冲区是内存块输入/输出缓冲区。它们的寿命相对较短。在Linux内核版本2.4之前,Linux有单独的页面缓存和缓冲区缓存。自2.4版以来,页面和缓冲区缓存是统一的,缓冲区是未在页面缓存中表示的原始磁盘块,即不是文件数据。因此,缓冲区指标的重要性微乎其微。在大多数系统上,缓冲区通常只有几十兆字节。

Linux共享内存

共享内存是进程间通信的最简单方式之一。共享内存允许两个或多个进程访问同一个内存,就像malloc()函数将指向同一个物理内存区域的指针返回给不同的进程一样。当一个进程更改该地址的内容时,其他进程会注意到这一点。所谓共享内存,其实就是多个进程共同使用同一个物理内存空,是通过将同一个物理内存映射到不同进程的虚拟空来实现的。因为映射到不同进程的虚拟空房间,不同进程可以直接使用,不需要像消息队列那样复制,所以共享内存的效率很高。共享内存可以通过mmap()映射公共文件机制或System V共享内存机制来实现。系统V通过映射特殊文件系统shm中的文件实现进程间的共享内存通信,也就是说每个共享内存区域对应一个特殊文件系统shm中的文件。

此外,还必须了解RSS、PSS、USS等相关概念:

VSS – Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS – Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS – Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

RSS(常驻集大小),可以使用top命令查询,是最常用的内存指标,表示一个进程占用的物理内存大小。但是把每个进程的RSS值加起来通常会超过整个系统的内存消耗,因为RSS包含了每个进程共享的内存。

当所有使用共享库的程序共享共享库占用的内存时,每个进程占用的内存。显然,所有进程的PSS之和就是系统的内存使用量。会更准确。它平均共享内存的大小,然后将其分配给每个进程。

USS(唯一集大小)进程占用的内存是PSS中自己的部分。它只计算进程占用的内存大小,不包括任何共享部分。

因此,下面介绍的一些命令检查进程的虚拟内存使用情况,一些检查进程的RSS或实际物理内存。当我们谈论它的时候,我们会标记这个信息。

顶层命令视图

执行top命令后,执行SHIFT +F,可以选择按某一列排序。例如,选择“否”后,您将按字段%MEM排序

Oracle 32163 0.0 14.2 13250108 3525160?ss 8月24日1:04 ora_s008_SCM2

Oracle 32165 0.0 8.1 13250172 2007704?Ss月24日0:37 ora_s009_SCM2

Oracle 32169 0.0 6.6 13250060 1656864?Ss月24日0:08 ora_s011_SCM2

Oracle 32177 0.0 6.0 13250148 1498760?Ss月24日0:12 ora_s015_SCM2

Oracle 32187 0.0 5.1 13250084 1267384?Ss月24日0:06 ora_s020_SCM2

Oracle 32179 0.0 5.1 13250584 1280156?Ss月24日0:05 ora_s016_SCM2

Oracle 32167 0.0 5.0 13250060 1248668?Ss月24日0:08 ora_s010_SCM2

Oracle 32175 0.0 3.4 13250596 857380?Ss月24日0:03 ora_s014_SCM2

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

检查进程占用的实际物理内存(与smem看到的实际物理内存大小不同。这里解释一下:大小:如果进程映射100M内存,那么进程的地址空将被报告为100M内存。事实上,这个大小并不是程序实际使用的内存。所以这里看到的记忆和smem看到的是一样的。

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

Python脚本查看

网上有一个python脚本,用来计算程序或者进程的内存使用量。地址是https://raw.githubusercontent.com/pixelb/PS记忆/主/PS记忆. py

python ps_mem.py

[root @ mylnx 03 ~]# python PS _ mem . py-h

用法:ps_mem [OPTION]...

显示程序核心内存使用情况

-救命-给我看看这个

-p <。pid>。[,pid2,...仅显示指定列表中的内存使用情况

-s,- split-args显示和分隔所有命令行参数

-t,- total只显示总值

-d,-按进程而不是按程序显示

-S,-交换显示交换信息

-w <。N>。每隔N秒测量并显示进程内存

[root @ mylnx 03 ~]# python PS _ mem . py-p 32341

私有+共享=内存使用程序

411.2 MiB + 184.0 KiB = 411.4 MiB java

-

411.4 MiB

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

参考文献:

https://stackoverflow.com/questions/131303/how-to-measure-actual-memory-usage-of-an-application-or-processhttp://www.cnblogs.com/kerrycode/p/5079319.htmlhttps://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py

[关于提交]

如果有原创的好文章投稿,请直接发消息到官方号。

1.《linux查看内存使用情况 Linux 查看进程消耗内存情况总结》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《linux查看内存使用情况 Linux 查看进程消耗内存情况总结》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/804277.html

上一篇

历史上真实的栎阳公主 武松病逝六和寺是个骗局?历史上真实的武松,结局远没有这么圆满

下一篇

陈豪老婆 06年港姐还有谁?混血阮儿靓过选秀时,陈茵媺成最幸福太太

清理内存的软件 官方清理内存工具来了,让你的微信更小、更轻。

电脑内存清理 电脑内存清理方法

  • 电脑内存清理 电脑内存清理方法
  • 电脑内存清理 电脑内存清理方法
  • 电脑内存清理 电脑内存清理方法

苹果8运行内存多大 多少GB的手机运存才是最合适的,为什么3GB苹果可以虐8GB安卓手机?

  • 苹果8运行内存多大 多少GB的手机运存才是最合适的,为什么3GB苹果可以虐8GB安卓手机?
  • 苹果8运行内存多大 多少GB的手机运存才是最合适的,为什么3GB苹果可以虐8GB安卓手机?
  • 苹果8运行内存多大 多少GB的手机运存才是最合适的,为什么3GB苹果可以虐8GB安卓手机?
内存涨价原因 一个月涨30%,内存市场将重演2018年的疯狂?

内存涨价原因 一个月涨30%,内存市场将重演2018年的疯狂?

对于经常关注PC市场的朋友们,一定不要忘记2017-2018年内存的疯狂涨价。当时PC内存条甚至被称为理财产品,价格涨了近5倍,但19、20年后又回升。涨价前的价格,就在大家都习惯了200元8G的内存价格后,内存在2020年12月底再次进入暴涨阶段,截至2021年1...

清理内存的软件哪个好 内存清理软件哪个好?这个最好,一步就轻松到位!

  • 清理内存的软件哪个好 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 清理内存的软件哪个好 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 清理内存的软件哪个好 内存清理软件哪个好?这个最好,一步就轻松到位!

快速清理内存的软件 内存清理软件哪个好?这个最好,一步就轻松到位!

  • 快速清理内存的软件 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 快速清理内存的软件 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 快速清理内存的软件 内存清理软件哪个好?这个最好,一步就轻松到位!

清除内存软件 内存清理软件哪个好?这个最好,一步就轻松到位!

  • 清除内存软件 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 清除内存软件 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 清除内存软件 内存清理软件哪个好?这个最好,一步就轻松到位!

内存清理工具 内存清理软件哪个好?这个最好,一步就轻松到位!

  • 内存清理工具 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 内存清理工具 内存清理软件哪个好?这个最好,一步就轻松到位!
  • 内存清理工具 内存清理软件哪个好?这个最好,一步就轻松到位!