精华内容
下载资源
问答
  • 查看内存的整体使用情况,“free”命令可以胜任,如果要查看某个指定进程的内存占用,可以选择使用“top”或它的升级版命令“htop”,但你会发现这些命令显示的结果都不直观。比如下面这样:htop命令显示难道有这么...

    在Linux系统中,当我们想查看系统内存使用情况的时候,可能首先会想到“free”。查看内存的整体使用情况,“free”命令可以胜任,如果要查看某个指定进程的内存占用,可以选择使用“top”或它的升级版命令“htop”,但你会发现这些命令显示的结果都不直观。比如下面这样:

    20b46b004558ac7abf367adc2c683f90.png

    htop命令显示

    难道有这么多进程都占用了101G“RES”内存吗?显示不是的,这样的话251GB内存早都撑爆了,这里显示的PID都是线程(可以使用“pstree”命令查看进程和线程的关系图)。再进一步,查看指定进程对“swap”空间的占用情况,这时上面给出的命令就有点力不从心了。

    好了,主角“smem”命令登场

    “smem”可以直观简洁的显示进程(不是线程)对内存和“swap”空间的占用情况。比如,对进程按对内存的占用大小从高往低排序,仅显示前5个:

    aneirin@host-1:~$ sudo smem  -r -k | head -6  PID User     Command                         Swap      USS      PSS      RSS  3752 presto   java -cp /home/presto/prest        0   101.9G   101.9G   102.0G 85199 hbase    /usr/lib/jvm/java-8-openjdk     7.7G    13.8G    13.8G    13.8G 77009 hdfs     jsvc.exec -Dproc_datanode -    86.8M    12.5G    12.6G    12.6G 139749 clickhouse /usr/bin/clickhouse-server      6.7G     5.6G     5.6G     5.6G 81533 yarn     /usr/lib/jvm/java-8-openjdk   207.2M     2.7G     2.7G     2.7G 

    核心参数解释:

    USS:Unique Set Size,进程的非共享(Unshared memory)内存占用

    PSS:Proportional Set Size,上面的USS加上进程在共享内存中占用的部分

    RSS:Resident set size,进程对物理内存的占用,这个值加上“Swap”中的值(被交换到外部文件系统的数据)就是进程整体的内存占用情况

    使用“smem”命令可以非常快速的找到占用内存最多的进程,从而在内存吃紧时,对进程做出调整。

    工作中常会收到“Swap”空间占用过大导致的告警,使用下面命令让惹祸的进程无处藏身:

    sudo smem -s swap -r -k | head -10

    注意,如果不使用“sudo”命令仅显示自己创建的进程内存使用情况。

    希望这篇文档能帮到正在努力的你,欢迎关注和评论!

    展开全文
  • 这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令;查看/proc/[pid]/下的文件。文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/下的文件内容进行了一些详细的介绍。文章...

    这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令;查看/proc/[pid]/下的文件。文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/下的文件内容进行了一些详细的介绍。文章内容来自google和自我总结,如有不当之处,欢迎批评指正。

    查看Linux内存的方法

    linux 下面查看内存有多种渠道,比如通过命令 ps ,top,free, pmap 等,或者通过/proc系统。一般情况下,ps,top,pmap,free可以满足要求,如果需要比较详细和精确地知道整机内存或者某个进程内存的使用情况,可以通过/proc 系统。

    使用命令

    free : 显示系统可用内存以及已经使用的内存的信息

    ps: 查看进程信息,静态,即当前状态

    top: 查看进程信息,动态

    pstree: 查看进程树

    pmap: 根据进程ID查看进程信息

    ps vs top

    1. ps命令–提供系统过去信息的一次性快照,也就是说ps命令能够查看刚刚系统的进程信息。
    2. top命令反应的是系统进程动态信息,默认10s更新一次。
    3. ps和top都是从/proc目录下读取进程的状态信息,内核把当前系统进程的各种有用信息都放在这个伪目录下。

    常见ps命令:

    ps -aux: 查看系统所有进程

    ps -l: 进查看自己的bash相关进程

    top 命令详解,请参考http://www.jb51.net/article/40807.htm

    基本命令:

    • 按键盘数字“1”,可监控每个逻辑CPU的状况:
    • 键盘“b”(打开/关闭加亮效果)
    • 键盘“x”(打开/关闭排序列的加亮效果)
    • ”shift + >”或”shift +
    • 敲击“f”键,编排基本视图中的显示字段
    • s,改变画面更新频率
    • l,关闭或开启第一部分第一行 top 信息的表示
    • t,关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
    • m,关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

    具体使用方法,可以使用 man [cmd] 查看。

    相关参数说明

    VSZ & VIRT

    1. 进程使用的虚拟内存值总量,包括所有代码,数据,共享库已经被swapped out的。VIRT = SWAP + RES。
    2. VSZ来自ps命令, VIRT来自top命令,二者均表示进程占用的虚拟内存大小。
    3. 假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

    RES & RSS

    1. 进程当前使用的内存大小,但不包括swap out. RES = CODE +DATA。
    2. 包含其他进程的共享
    3. RES 来自 top 命令, RSS 来自 ps 命令,两者在表示意义上没有区别,都是从 /cat/proc/[pid]/stat 文件中读取的信息。
    4. 如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
    5. 关于库占用内存的情况,它只统计加载的库文件所占内存大小

    CODE

    可执行代码占用的物理内存大小

    DATA

    1. 物理内存中存放数据的大小,在程序运行中需要用到
    2. 如果top命令没有显示, 按f键显示

    SHR

    1. 共享内存大小
    2. 除了自身进程的共享内存,也包含其他进程的共享内存
    3. 计算某个进程所占用物理内存的大小: RES - SHR
    4. swap out后,该值会下降。

    查看一个进程的内存信息步骤

    1.获取进程PID

    $ ps -aux | grep /usr/sbin/NetworkManagerroot 845 0.0 0.0 387084 13332 ? Ssl 3月28 0:00 /usr/sbin/NetworkManager --no-daemon

    2.查看进程的所有线程

    $ ps mp 845 -o THREAD,tidUSER %CPU PRI SCNT WCHAN USER SYSTEM TIDroot 0.0 - - - - - -root 0.0 19 - - - - 845root 0.0 19 - - - - 1025root 0.0 19 - - - - 1027

    3.查看所有子进程

    $ pstree -p 845NetworkManager(845)─┬─dhclient(30278)├─dnsmasq(1123)├─{gdbus}(1027)└─{gmain}(1025)

    使用 /proc 下文件

    /proc/[pid]/ 下面与进程内存相关的文件主要有maps , smaps, status。

    maps: 文件可以查看某个进程的代码段、栈区、堆区、动态库、内核区对应的虚拟地址

    smaps: 显示每个分区更详细的内存占用数据

    status: 包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻

    有名与匿名:

    一个文件可以映射到进程的一段内存区域中,映射的文件描述符保存在vm_area_struct->vm_file域中,这种内存区域叫做有名内存区域,相反,属于匿名映射内存区域。

    maps 文件分析

    Proc/[pid]/maps 显示进程映射了的内存区域和访问权限。对应内核中的操作集为 proc_pid_maps_op,具体的导出函数为 show_map 。内核中进程的一段地址空间用一个vm_area_struct结构体表示,所有地址空间存储在task->mm->mmap链表中。

    截取一行内容如下:

    7f4e3f5ca000-7f4e3f674000 r-xp 00000000 08:02 525202 /usr/lib/x86_64-linux-gnu/NetworkManager/libnm-device-plugin-wifi.so

    Vm_area_struct每项对应解析如下表所示:

    a8815d8641a9146b0562825e6220a33f.png

    maps文件只能显示简单的分区,smap文件可以显示每个分区的更详细的内存占用数据。

    smap 文件分析

    截取一段文件,各字段解析如下:

    7f148b2fa000-7f148b2fb000 rw-p 00026000 08:02 2883675 /lib/x86_64-linux-gnu/ld-2.23.soSize: 4 kB 虚拟内存大小Rss: 4 kB 实际使用物理内存大小 RSS = Shared_Clean+Shared_Dirty+Private_Clean+Private_DirtyPss: 4 kB RSS中私有的内存页面Shared_Clean: 0 kB RSS中共享内存,没有被改写的页面Shared_Dirty: 0 kB RSS中共享内存,被改写的页面Private_Clean: 0 kB RSS中私有内存,未被改写Private_Dirty: 4 kB RSS中私有内存,被改写Referenced: 4 kBAnonymous: 4 kBAnonHugePages: 0 kBShared_Hugetlb: 0 kBPrivate_Hugetlb: 0 kBSwap: 0 kB 处于交换区的页面大小SwapPss: 0 kBKernelPageSize: 4 kB 操作系统一个页面大小MMUPageSize: 4 kB 体系结构MMU一个页面大小Locked: 0 kBVmFlags: rd wr mr mw me dw ac sd

    Dirty页面如果没有交换机制的情况下,应该是不能回收的。

    分析脚本:

    自己写了个简单的分析脚本,如下,可以根据需要进行修改。

    #! /bin/bashawk 'BEGIN{ total = 0; printf("SIZERSSSHARED_CLEANSHARED_DIRTYPRIVATE_CLEANPRIVATE_DIRTY") }{ if(NF >3){ if($2 ~ /[r-][w-][x-][ps]/){ if($6 =="") name = $1; else name = $6; } } while(getline) { if(NF >3){ if($2 ~ /[r-][w-][x-][ps]/){ if($6 =="") name = $1; else name = $6; } } if($1 ~ /^Size/){ size = $2; total += $2; }   if($1 ~ /Rss/){ rss = $2; }  if($1 ~ /Shared_Clean/){ shared_clean = $2; } if($1 ~ /Shared_Dirty/){ shared_dirty = $2; }  if($1 ~ /Private_Clean/){ private_clean = $2; }  if($1 ~ /Private_Dirty/){ private_dirty = $2; } if($1 ~ /VmFlags/){ printf("%d%d%d%d%d%d%s
    展开全文
  • linux内存占用详细统计分析

    千次阅读 2018-09-07 12:05:16
    linux内存占用 linux内存占用通过free来查看 但是具体由哪些地方占用了呢 大致分为4类:rss、pagetable、slabinfo、HugePages   ps aux --sort=-rss|grep -v RSS|awk '{s=s+$6}END{print s/1024"MB"...

    linux内存占用

    linux内存占用通过free来查看

    但是具体由哪些地方占用了呢

    大致分为4类:rss、pagetable、slabinfo、HugePages

     

    ps aux --sort=-rss|grep -v RSS|awk '{s=s+$6}END{print s/1024"MB"}'

     

    echo `grep PageTables /proc/meminfo | awk '{print $2}'` KB

     

    echo `cat /proc/slabinfo |awk 'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print sum/1024/1024}'` MB

     

    cat /proc/meminfo

    展开全文
  • linux 内存占用查看

    2020-12-06 20:00:34
    1.查看所有大致内存占用 cat /proc/meminfo 2.查看各进程内存占用详细信息 top 3.查看该进程详细信息 cat /proc/[pid 进程id]/status 4.查看该进程下所有线程信息 top -H -p [pid] 5.查看线程堆栈信息 ...

    linux 内存查看

    1.查看所有大致内存占用

    cat /proc/meminfo
    

    在这里插入图片描述

    2.查看各进程内存占用详细信息

    top
    

    在这里插入图片描述

    3.查看该进程详细信息

    cat /proc/[pid 进程id]/status
    

    在这里插入图片描述

    4.查看该进程下所有线程信息

    top -H -p [pid]
    

    在这里插入图片描述

    5.查看线程堆栈信息

    1. 打印该线程id的十六进制表示

      printf "%x\n" [pid]
      
    2. 打印该线程堆栈信息

      jstack [进程id] |grep -A 10 [线程id十六进制表示]
      

      在这里插入图片描述

    ``

    1. 查看死锁的java文件和报错定位行数
    展开全文
  • 查看内存的整体使用情况,“free”命令可以胜任,如果要查看某个指定进程的内存占用,可以选择使用“top”或它的升级版命令“htop”,但你会发现这些命令显示的结果都不直观。比如下面这样:htop命令显示难道有这么...
  • Linux内存占用过高?非也

    千次阅读 2016-03-08 00:09:43
    Linux内存占用过高
  • Linux 内存占用分析

    万次阅读 2018-02-08 11:10:46
    这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令;查看/proc/[pid]/下的文件。文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/下的文件内容进行了一些详细的介绍。...
  • 我们都知道,直接从内存...相对于物理内存,在 Linux 下还有一个虚拟内存的概念,虚拟内存是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存。用作虚拟内存的磁盘空间被称为交换空间(又...
  • Linux内存占用释放

    千次阅读 2020-04-08 17:40:45
    1.查看/proc/sys/vm/drop_caches的值 [root@iZbp1f0xuq9rc41s6gdvfyZ conf]# cat /proc/sys/vm/drop_caches 1 2.运行sync命令 [root@iZbp1f0xuq9rc41...3.输入手动释放内存的命令 [root@iZbp1f0xuq9rc41s6gd...
  • linux内存占用查看

    2019-10-07 10:34:15
    查看内存使用情况 free ...查看占用内存最高的5个进程psaux|sort-k4nr|head-n5查看占用CPU最高的5个进程psaux|sort-k3nr|head-n5 转载于:https://www.cnblogs.com/ShanHeDiao/p/5669828.html...
  • linux内存占用分析

    千次阅读 2017-03-16 21:23:52
    想必在Linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES...
  • 这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令;查看/proc/[pid]/下的文件。文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/下的文件内容进行了一些详细的介绍。文章...
  • Linux内存占用过高排查过程

    千次阅读 2020-03-23 10:57:57
    一朋友找我说,他们一个项目的服务器内存占用率太高了,让我帮忙看下怎么回事。我正好不是太忙就帮他看了下,并记录如下。 1 查看服务器状态 他的服务器是阿里云的ECS,系统是 CentOS Linux release 7.5.1804 ...
  • Linux 内存 占用较高问题排查

    万次阅读 2019-04-24 14:31:55
    一 查看内存情况 #按 k 查看 free #按兆M查看 free -m total:总计物理内存的大小。 used:已使用多大。 free:可用有多少。 Shared:多个进程共享的内存总额。 Buffers/cached:磁盘缓存的大小。 #所以...
  • 一 查看内存情况 #按 k 查看 free #按兆M查看 free -m total:总计物理内存的大小。 used:已使用多大。 free:可用有多少。 Shared:多个进程共享的内存...查看进程的内存占用 ...查看内存占用高的前10个进程 ps aux |
  • linux内存占用问题

    2015-12-10 10:43:52
    Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上: Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers Swap: 6127608k total, 0k used, 6127608k ...
  • Linux内存占用查看命令

    千次阅读 2018-06-20 19:56:32
     top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器  可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用.....
  • Linux 内存占用大排查

    2018-08-01 11:07:00
    这时,可以用下面的命令查看占用内存前10的进程,改变 10 的数字,可以调整前几的个数。 ps -aux | sort -k4nr | head -n 10 下图解释: 第二行中,第一个红框是进程的名称,第二个红框是占用内存的大小,单位...
  • 发现内存占用97%,瞬间吓尿了。 google了半天才发现,一般的解释是Linux系统下有一种思想,内存不用白不用,占用了就不释放,听上去有点道理,但如果我一定要知道应用程序还能有多少内存可用呢? Linux下查看内存...
  • # top -c # 大写M M
  • 3.再使用top查看内存占用情况,发觉内存占用率已经降下来了,但是free -g却还有100G被占用(内存总共128G),vmstat发现是cache 占用了大量内存。 使用 echo 1 > /proc/sys/vm/drop_caches 释放缓存 常用的释放...
  • Linux内存占用过高

    2019-09-26 18:31:35
    是不是内存泄露?是否要重启服务?只能说不要看现象,要看本质才能找到问题的根源。往往给出这样的结果,怀疑内存用了90%:Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffersSwap: 2650684k total...
  • linux 内存占用过大分析

    万次阅读 2017-03-03 14:42:17
    1、使用 free -g 查看内存使用情况: 2、查看进程占用内存情况: ps aux|awk '{sum+=$6} END {print sum/...slab是Linux操作系统的一种内存分配机制。其工作是针对一些经常分配并释放的对象,如进程描述符等
  • 只是会混淆新手,如果你的应用程序需要更多的内存,他们会回收一部分用作磁盘数据缓存的物理内存,返回给应用程序,这个过程不需要启动交换磁盘缓存(Disk caching)是不能禁用的 –为了增加数据交换速度内存占用率 ...
  • 正确理解Linux内存占用过高的问题 老有人问为何开机后,还没有其他服务,mem就被用完了?是不是内存泄露?是否要重启服务?只能说不要看现象,要看本质才能找到问题的根源。 往往给出这样的结果,怀疑内存用了90%...
  • Linux内存占用情况分析

    千次阅读 2015-08-17 12:08:04
    Linux下如何查内存信息,如内存总量、已使用量、可使用量。 经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实。 当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,716
精华内容 3,886
关键字:

linux内存占用

linux 订阅