zoukankan      html  css  js  c++  java
  • top命令详解

    top命令详解

    常被人说的VIRT=RES+SWAP

    一般情况下直接使用top命令查看进程信息时,每个进程的的虚拟内存使用情况VIRT并不是实际使用的大小,

    需要使用top -m命令,使用后列表中的VIRT会被替换成USED,这是再套用公式VIRT(USED)=RES+SWAP,等式成立。

     VIRT 值最高的进程就是内存使用最多的进程。当你在用 top 排查为什么你的电脑运行无比卡的时候,那个 VIRT 数值最大的进程就是元凶。

    VIRT:virtual memory usage 虚拟内存
    1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
    2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

    RES:resident memory usage 常驻内存
    1、进程当前使用的内存大小,但不包括swap out
    2、包含其他进程的共享
    3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
    4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

    SHR:shared memory 共享内存
    1、除了自身进程的共享内存,也包括其他进程的共享内存
    2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
    3、计算某个进程所占的物理内存大小公式:RES – SHR
    4、swap out后,它将会降下来

    DATA
    1、数据占用的内存。如果top没有显示,按f键可以显示出来。
    2、真正的该程序要求的数据空间,是真正在运行中要使用的。

    PR

    进程的调度优先级(动态优先级)。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。

    NI

    进程的nice值(静态优先级-20~19)。越小的值意味着越高的优先级

     buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。

    cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。 

    Swap分区

    Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。即当系统的物理内存不够用时,把硬盘中一部分空间释放出来,以供当前运行的程序使用。当那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。那些被释放内存空间的程序一般是很长时间没有什么操作的程序。

    linux 会使用硬盘的一部分做为SWAP分区,用来进行进程调度(进程是正在运行的程序)把当前不用的进程调成 “等待(standby)”,甚至 ‘睡眠(sleep)’,一旦要用,再调成 ‘活动(active)’,睡眠的进程就躺到SWAP分区睡大觉,把内存空出来让给 ‘活动’ 的进程。
    如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
    在linux里面,默认设置swappiness这个值等于60

    Swap空间一般应大于或等于物理内存的大小,同时最小不应小于64M,最大应该是物理内存的两倍

    -/+ buffers/cache看作两部分:

    -buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,需要是它时是可以清空释放的),其值=used-buffers-cached。

    +buffers/cache:可用的内存大小(同理也不是free表示的部分,因为buffers和cached是可以清空释放的),其值=free+buffers+cached。

    Swap:硬盘上交换分区的使用大小。设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘(也就是把buffers/cache里面长期不用的数据存放在swap里面,而swap又在硬盘),从而把磁盘的部分空间当做虚拟内存来使用。

     可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数

    当空闲物理内存不多时,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作诗额外的空闲内存。swap如果被频繁调用,长时间不为0,则才是内存资源是否紧张的依据。通过free看资源时,实际主要关注-/+ buffers/cache的值就可以知道内存到底够不够了

  • 相关阅读:
    LCA + 二分(倍增)
    Educational Codeforces Round 5
    BNU 51276
    POJ 1511
    hdu2121
    最小树形图(朱刘算法)
    Educational Codeforces Round 1(D. Igor In the Museum) (BFS+离线访问)
    Educational Codeforces Round 1(C. Nearest vectors)
    POJ-2785 4 Values whose Sum is 0(折半枚举 sort + 二分)
    POJ 1661Help Jimmy(逆向DP Or 记忆化搜索 Or 最短路径)
  • 原文地址:https://www.cnblogs.com/111testing/p/13337054.html
Copyright © 2011-2022 走看看