内存 查看linux_linux如何查看内存 - CSDN
  • 查看Linux磁盘及内存占用情况

    万次阅读 多人点赞 2017-12-11 18:01:39
    查看磁盘使用情况: ...查看内存占用情况: 1.top PID:当前运行进程的ID USER:进程属主 PR:每个进程的优先级别 NInice:反应一个进程“优先级”状态的值,其取值范围是-20至19,一  共40个级别。这个值

    查看磁盘使用情况:
    df -k:以KB为单位显示磁盘使用量和占用率
    这里写图片描述
    df -m:以Mb为单位显示磁盘使用量和占用率
    这里写图片描述
    df –help:查看更多df命令及使用方法
    这里写图片描述

    查看内存占用情况:
    1.top
    这里写图片描述

    PID:当前运行进程的ID
    USER:进程属主
    PR:每个进程的优先级别
    NInice:反应一个进程“优先级”状态的值,其取值范围是-20至19,一
        共40个级别。这个值越小,表示进程”优先级”越高,而值越
        大“优先级”越低。一般会把nice值叫做静态优先级
    VIRT:进程占用的虚拟内存
    RES:进程占用的物理内存
    SHR:进程使用的共享内存
    S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示
      该进程优先值为负数
    %CPU:进程占用CPU的使用率
    %MEM:进程使用的物理内存和总内存的百分比
    TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
    COMMAND:进程启动命令名称

    2.free
    这里写图片描述
    total : 总计物理内存的大小。
    used : 已使用多大。
    free : 可用有多少。
    Shared : 多个进程共享的内存总额。
    Buffers/cached : 磁盘缓存的大小。
    -/+ buffers/cached) :
    used:已使用多大;
    free:可用有多少。
    注意:
    (mem)的used/free与(-/+ buffers/cache) used/free的区别:
    这两者的区别在于使用的角度来看,前者是从OS(Operating Sys)的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是11737644KB,已用内存是54215352KB,
    后者所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
    所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

    3.cat /proc/meminfo
    查看RAM使用情况最简单的方法是通过命令:cat /proc/meminfo;
    这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。
    /proc/meminfo列出了所有你想了解的内存的使用情况。
    进程的内存使用信息也可以通过命令:cat /proc//statm 、 cat /proc//status 来查看。
    这里写图片描述

    4.ps aux –sort -rss
    ps aux: 列出目前所有的正在内存当中的程序。
    a显示终端上地所有进程,包括其他用户地进程(有的进程没有终端)。
    -a 显示所有终端机下执行的进程,除了阶段作业领导者之外。
    u  以用户为主的格式来显示进程状况。
    x  显示所有进程,不以终端机来区分。
    a会包括其他用户(否则只有用户本身); x会包括其他终端;
    aux就可以包括内存所有;
    这里写图片描述

    USER:该 process 属于那个使用者账号的
    PID :该 process 的号码
    %CPU:该 process 使用掉的 CPU 资源百分比
    %MEM:该 process 所占用的物理内存百分比
    VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
    RSS :该 process 占用的固定的内存量 (Kbytes)
    TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    STAT:该程序目前的状态,主要的状态有
    R :该程序目前正在运作,或者是可被运作
    S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
    T :该程序目前正在侦测或者是停止了
    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    START:该 process 被触发启动的时间
    TIME :该 process 实际使用 CPU 运作的时间
    COMMAND:该程序的实际指令

    5.vmstat -s
    vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
    这里写图片描述

    6.gnome-shell-system-monitor-applet
    Gnome-shell系统监视器gnome-shell-system-monitor-applet,是一个Gnome-shell 面板小程序,此程序用户监视CPU占用百分比、内存使用和SWAP使用情况,如图通过顶部栏显示和关闭。
    此程序下载地址:https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet

    和其他gnome-shell扩展小程序相比,安装可能有点困难,首先需要安装git-core核心。
    在终端输入命令:
    mkdir ~/git_projects
    cd ~/git_projects
    git clone git://github.com/paradoxxxzero/gnome-shell-system-monitor-applet.git
    mkdir -p ~/.local/share/gnome-shell/extensions
    cd ~/.local/share/gnome-shell/extensions
    ln -s ~/git_projects/gnome-shell-system-monitor-applet/system-monitor@paradoxxx.zero.gmail.com
    sudo cp ~/git_projects/gnome-shell-system-monitor-applet/org.gnome.shell.extensions.system-monitor.gschema.xml /usr/share/glib-2.0/schemas
    cd /usr/share/glib-2.0/schemas
    sudo glib-compile-schemas .
    如果你使用的jhbuild编译的gnome-shell,可能会无法工作!

    7.相关知识

    linux上进程有5种状态:
    1. 运行(正在运行或在运行队列中等待)
    2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
    3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
    4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
    5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
    ps工具标识进程的5种状态码:
    D 不可中断 uninterruptible sleep (usually IO)
    R 运行 runnable (on run queue)
    S 中断 sleeping
    T 停止 traced or stopped
    Z 僵死 a defunct (”zombie”) process
    注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
    使用ps格式输出来查看进程状态:
    ps -eo user,stat..,cmd
    user 用户名
    uid 用户号
    pid 进程号
    ppid 父进程号
    size 内存大小, Kbytes字节.
    vsize 总虚拟内存大小, bytes字节(包含code+data+stack)
    share 总共享页数
    nice 进程优先级(缺省为0, 最大为-20)
    priority(pri) 内核调度优先级
    pmem 进程分享的物理内存数的百分比
    trs 程序执行代码驻留大小
    rss 进程使用的总物理内存数, Kbytes字节
    time 进程执行起到现在总的CPU暂用时间
    stat 进程状态
    cmd(args) 执行命令的简单格式
    例子:
    查看当前系统进程的uid,pid,stat,pri, 以uid号排序.
    ps -eo pid,stat,pri,uid –sort uid
    查看当前系统进程的user,pid,stat,rss,args, 以rss排序.
    ps -eo user,pid,stat,rss,args –sort rss

    展开全文
  • 查看linux系统中空闲内存/物理内存使用/剩余内存 查看系统内存有很多方法,但主要的是用top命令和free 命令 当执行top命令看到结果,要怎么看呢?这里说明一下: Mem: 666666k total, 55555k used,并不是代表你的...

    查看linux系统中空闲内存/物理内存使用/剩余内存

    查看系统内存有很多方法,但主要的是用top命令和free 命令
    当执行top命令看到结果,要怎么看呢?这里说明一下:
    Mem: 666666k total, 55555k used,并不是代表你的应用程序已经使用了55555k的内存,这55555k是包含了:应用程序内存 + 缓冲 + 缓存的内存的。
    用free命令查看更直接:
    下面是一个例子(单位是MB): 

    [root@linuxzgf ~]# free -m
                        total       used       free     shared    buffers     cached
    Mem:          7982       6811       1171          0        350       5114
    -/+ buffers/cache:       1346       6636
    Swap:        16935         11      16924

    在这里例子中,应用程序只使用了1346MB内存,还有6636MB空闲内存可以使用. 
    一些简单的计算方法: 
    物理已用内存 = 实际已用内存 - 缓冲 - 缓存 = 6811M - 350M - 5114M

    物理空闲内存 = 总物理内存 - 实际已用内存 + 缓冲 + 缓存 

    应用程序可用空闲内存 = 总物理内存 - 实际已用内存 

    应用程序已用内存 = 实际已用内存 - 缓冲 - 缓存

    top命令的结果详解
    top命令 是Linux下常用的性能 分析工具 ,能够实时显示系统 中各个进程的资源占用状况,类似于Windows的任务管理 器。下面详细介绍它的使用方法。

    top - 02:53:32 up 16 days,  6:34, 17 users,  load average: 0.24, 0.21, 0.24
    Tasks: 481 total,   3 running, 474 sleeping,   0 stopped,   4 zombie
    Cpu(s): 10.3%us,  1.8%sy,  0.0%ni, 86.6%id,  0.5%wa,  0.2%hi,  0.6%si,  0.0%st
    Mem:   4042764k total,  4001096k used,    41668k free,   383536k buffers
    Swap:  2104472k total,     7900k used,  2096572k free,  1557040k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    32497 jacky     20   0  669m 222m  31m R   10  5.6       29:27.62 firefox
     4788 yiuwing   20   0  257m  18m  13m S    5  0.5          5:42.44 konsole
     5657 Liuxiaof  20   0  585m 159m  30m S    4  4.0          5:25.06 firefox
     4455 xiefc      20   0  542m  124m  30m R    4  3.1         7:23.03 firefox
     6188 Liuxiaof  20   0  191m   17m  13m S    4  0.5          0:01.16 konsole

    统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime  命令的执行结果。其内容如下:

    01:06:48  当前时间  
    up 1:22  系统运行 时间,格式为时:分  
    1 user  当前登录用户 数  
    load average: 0.06, 0.60, 0.48  系统负载 ,即任务队列的平均长度。
                三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。 

    第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

    Tasks: 29 total  进程总数  
    1 running  正在运行的进程数  
    28 sleeping  睡眠的进程数  
    0 stopped  停止的进程数  
    0 zombie  僵尸进程数  
    Cpu(s): 0.3% us  用户空间占用CPU百分比  
    1.0% sy  内核 空间占用CPU百分比  
    0.0% ni  用户进程空间内改变过优先级的进程占用CPU百分比  
    98.7% id  空闲CPU百分比  
    0.0% wa  等待输入输出的CPU时间百分比  
    0.0% hi     
    0.0% si    

    最后两行为内存 信息。内容如下:

    Mem: 191272k total  物理内存总量  
    173656k used  使用的物理内存总量  
    17616k free  空闲内存总量  
    22052k buffers  用作内核缓存 的内存量  
    Swap: 192772k total  交换区总量  
    0k used  使用的交换区总量  
    192772k free  空闲交换区总量  
    123988k cached  缓冲的交换区总量。
                内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
                该数值即为这些内容已存在于内存中 的交换区的大小。
                相应的内存再次被换出时可不必再对交换区写入。 

    进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

    序号  列名  含义  
    a  PID  进程id  
    b  PPID  父进程id  
    c  RUSER  Real user name  
    d  UID  进程所有者的用户id  
    e  USER  进程所有者的用户名  
    f  GROUP  进程所有者的组名  
    g  TTY  启动进程的终端名。不是从终端启动的进程则显示为 ?  
    h  PR  优先级  
    i  NI  nice值。负值表示高优先级,正值表示低优先级  
    j  P  最后使用的CPU,仅在多CPU环境 下有意义  
    k  %CPU  上次更新到现在的CPU时间占用百分比  
    l  TIME  进程使用的CPU时间总计,单位秒  
    m  TIME+  进程使用的CPU时间总计,单位1/100秒  
    n  %MEM  进程使用的物理内存 百分比  
    o  VIRT  进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES  
    p  SWAP  进程使用的虚拟内存中,被换出的大小,单位kb。  
    q  RES  进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA  
    r  CODE  可执行代码占用的物理 内存大小,单位kb  
    s  DATA  可执行代码以外的部分(数据 段+栈)占用的物理 内存大小,单位kb  
    t  SHR  共享内存大小,单位kb  
    u  nFLT  页面错误次数  
    v  nDRT  最后一次写入到现在,被修改过的页面数。  
    w  S  进程状态。
                D =不可中断的睡眠状态
                R =运行
                S =睡眠
                T =跟踪/停止
                Z =僵尸进程  
    x  COMMAND  命令名/命令行  
    y  WCHAN  若该进程在睡眠,则显示睡眠中的系统函数名  
    z  Flags  任务标志,参考 sched.h 

    默认情况下仅显示比较重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND  列。可以通过下面的快捷键来更改显示内容。
    更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z  即可显示或隐藏对应的列,最后按回车键确定。
    按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z  可以将相应的列向左移动。最后按回车键确定。
    按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的  R 键可以将当前的排序倒转。
    top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
    <空格>:立刻刷新。
    P:根据CPU使用大小进行排序。
    T:根据时间、累计时间排序。
    q:退出top命令。
    m:切换显示内存信息。
    t:切换显示进程和CPU状态信息。
    c:切换显示命令名称和完整命令行。
    M:根据使用内存大小进行排序。
    W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
    可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

    居然查看了内存,以下指令也会用到:
    查看CPU个数
    # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
    查看CPU核数
    # cat /proc/cpuinfo | grep "cpu cores" | uniq
    查看CPU型号
    # cat /proc/cpuinfo | grep 'model name' |uniq
    那么,该服务器有2个4核CPU,型号Intel(R) Xeon(R) CPU E5630 @ 2.53GHz

    占用内存的测量
    测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
    /proc/meminfo 机器的内存使用信息
    /proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
    /proc/pid/statm 进程所占用的内存

    业余草微信公众号

    感谢您的关注!可加QQ1群:135430763,QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

    展开全文
  • Linux查看进程内存

    千次阅读 2018-03-23 16:40:09
    Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个: 1: top -p pid 查看程序的情况,一些简单的占用情况。 2: ps -...

    在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个:

    1:

    top -p pid 查看程序的情况,一些简单的占用情况。

    mark
    2:

    ps -aux | grep process_name     #这里是一些程序占用资源的信息,
                    #还包括用户,cmd之类的。

    mark
    3:

    cat /proc/pid/status      #这里会打印出当前进程详细的情况,其中,内存是 VmRSS。

    mark

    4.

    cat /proc/2201/maps     #进程内存映射(显示进程地址,堆栈占用等等)
    //该文件有6列,分别为:
    //地址:库在进程里地址范围
    //权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;
    //偏移量:库在进程里地址范围
    //设备:映像文件的主设备号和次设备号;
    //节点:映像文件的节点号;
    //路径: 映像文件的路径

    mark

    注:pid是要替换成一个id数字的。

    参考链接:http://www.jb51.net/LINUXjishu/66604.html

    展开全文
  • Linux 查看进程消耗内存情况总结

    万次阅读 2018-09-29 13:53:50
    Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗、占用的内存情况,Linux内存管理和相关概念要比Windows复杂一些。在此之前,我们需要了解一下Linux系统下面有关内存的专用名词和...

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

    物理内存和虚拟内存 

    物理内存:就是系统硬件提供的内存大小,是真正的内存,一般叫做内存条。也叫随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。 

    虚拟内存:相对于物理内存,在Linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。Linux会在物理内存不足时,使用虚拟内存,内核会把暂时不用的内存块信息写到虚拟内存,这样物理内存就得到了释放,这块儿内存就可以用于其他目的,而需要用到这些内容的时候,这些信息就会被重新从虚拟内存读入物理内存。 

    Linux的buffers与cached

    在Linux中经常发现空闲的内存很少,似乎所有的内存都被消耗殆尽了,表面上看是内存不够用了,很多新手看到内存被“消耗殆尽”非常紧张,其实这个是因为Linux系统将空闲的内存用来做磁盘文件数据的缓存。这个导致你的系统看起来处于内存非常紧急的状况。但是实际上不是这样。这个区别于Windows的内存管理。Linux会利用空闲的内存来做cached & buffers。 

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

    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.

    cached是作为page cache的内存, 文件系统的cache。你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用

    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.

    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.

    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共享内存

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

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

    • VSS – Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

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

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

    • USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
       

    RSS(Resident set size),使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。

    PSS(Proportional set size)所有使用某共享库的程序均分该共享库占用的内存时,每个进程占用的内存。显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。 

    USS(Unique set size )进程独自占用的内存,它是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。 

    所以下面介绍的命令,有些查看进程的虚拟内存使用,有些是查看进程的RSS或实际物理内存。在讲述的时候,我们会标注这些信息。

    top命令查看

    执行top命令后,执行SHIFT +F ,可以选择按某列排序,例如选择n后,就会按字段%MEM排序

    当然也可以使用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这一列的值加起来会大于100呢? 这个是因为这里计算的时候包含了共享内存的缘故,另外由于共享内存的缘故,你看到进程使用VIRT或RES都非常高。由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS,对应top命令里面的RES)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。

    ps命令查看

    使用ps命令找出占用内存资源最多的20个进程(数量可以任意设置)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    # 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

    1

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

    查看进程占用的实际物理内存(与smem看到实际物理内存大小有出入,这里解释一下:SIZE: 进程使用的地址空间, 如果进程映射了100M的内存, 进程的地址空间将报告为100M内存. 事实上, 这个大小不是一个程序实际使用的内存数. 所以这里看到的内存跟smem看到的大小有出入)

    1

    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

    1

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

    smem命令查看

    关于smem命令,这里不做介绍,直接参考链接Linux监控工具介绍系列——smem

    1

    #smem -rs pss

    pmap命令查看

    1

    2

    # ps -ef | grep tomcat

    # pmap 32341

    1

    # 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。

    python脚本查看

    网上有个python脚本计算程序或进程的内存使用情况,地址位于https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py

    python ps_mem.py

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    [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

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

    参考资料:

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

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

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

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

    万次阅读 2019-04-25 17:45:26
    输入:top PID:进程的ID  USER:进程所有者  PR:进程的优先级别... VIRT:进程占用的虚拟内存  RES:进程占用的物理内存  SHR:进程使用的共享内存  S:进程的状态。S表示休眠,R表示正在运行,Z表...
  • Linux 查看Tomcat内存占用情况

    万次阅读 2017-09-06 16:04:04
    以前服务器还是用 Windows Server 系统的时候,查看一下各个进程对内存的影响就再简单不过了,打开任务管理器跟踪一下相关的 JAVA 进程就OK了。但是服务器如果使用的是 Linux 系统,有不少小伙伴就不知道怎么看了,...
  • 如何正确查看Linux机器内存使用情况

    千次阅读 2019-06-20 11:54:15
    如何正确查看Linux机器内存使用情况 背景 只要工作上涉及到Linux机器,基本上都会有这样一个需求,查看内存使用情况,但是怎么看才正确呢?之前使用的是top命令,一直存在一个误区。 为什么top命令看内存会有误区? ...
  • 查看linux的物理内存大小

    万次阅读 2018-07-26 22:02:24
    网上大部分的free 和cat /proc/meminfo 查看的是linux 可以分配的内存大小。 如果想查看linux整个系统分配的物理内存大小,可以通过cat /proc/iomem , 其中System Ram 就是uboot 给linux分配的物理内存空间大小。 ...
  • LinuxLinux的虚拟内存详解(MMU、页表结构)

    万次阅读 多人点赞 2019-02-05 17:27:06
    内存是程序得以运行的重要物质基础。如何在有限的内存空间运行较大的应用程序,曾是困扰人们的一个难题。为解决这个问题,人们设计了许多的方案,其中最成功的当属虚拟内存技术。Linux作为一个以通用为目的的现代...
  • Linux查看CPU、内存占用率

    万次阅读 2018-02-09 10:18:39
    Linux查看CPU、内存占用率我们经常需要查看CPU和内存占用率,否则一旦存在情况很快就会有IDC(或客户)找上门,Linux查看资源使用情况有多种命令可以参考,CPU、内存、IO、NETWORK等资源使用情况都可以通过某些...
  • 查看LINUX进程内存占用情况

    千次阅读 2019-06-05 10:53:32
    可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:  (1)top  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows...
  • linux 共享内存查看和删除

    万次阅读 2012-07-09 12:32:41
    您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。 预备知识 Linux中通过API函数shmget创建的共享内存一般都是在程序中使用shmctl来释放的,但是有时...
  • linux 运行内存/磁盘空间/CPU查看命令

    千次阅读 2019-01-12 18:18:24
    linux 运行内存不足报错 和查看 很明显,内存不足! 磁盘空间查看 CPU查看
  • 很多工程师碰到一个共性的问题:Linux工程师很多,甚至有很多有多年工作经验,但是对一些Linux内存管理和linux进程管理关键概念的理解非常模糊,比如不理解CPU、内存资源等的真正分布,具体的工作机制,这使得他们对...
  • linux查看CPU和内存信息

    千次阅读 2019-01-14 10:03:55
    查看cpu的方法 1、 cat /proc/cpuinfo 或者 更直观的查看cpu的型号命令:dmesg |grep -i xeon 查看内存的方法 2、 cat /proc/meminfo 或者 更直观的查看内存的命令:free -m 查看硬盘大小 3、df -h 最后用...
  • Linux共享内存查看和删除

    万次阅读 2012-12-18 21:55:31
    您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。 预备知识 Linux中通过API函数shmget创建的共享内存一般都是在程序中使用shmctl来释放的,但是有时...
  • 命令查看Linux服务器状态
  • Q:我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢? 在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。...
1 2 3 4 5 ... 20
收藏数 801,930
精华内容 320,772
关键字:

内存 查看linux