精华内容
下载资源
问答
  • 名词解释:Linux内存管理之RSS和VSZ

    千次阅读 2018-12-27 10:10:24
    Linux内存管理中不管是top命令还是pmap命令,都会有RSS和VSZ这两个名词,这里解释一下: RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少内存,并不包含在SWAP中占用...

    名词解释:Linux内存管理之RSS和VSZ_ITPUB博客
    http://blog.itpub.net/29757574/viewspace-2150678/

     

    Linux内存管理中不管是top命令还是pmap命令,都会有RSS和VSZ这两个名词,这里解释一下:

    RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少内存,并不包含在SWAP中占用的虚拟内存。即使是在内存中的使用了共享库的内存大小也一并计算在内,包含了完整的在stack和heap中的内存。

    VSZ (Virtual Memory Size),表明是虚拟内存大小,表明了该进程可以访问的所有内存,包括被交换的内存和共享库内存。

    如果进程A的二进制文件大小为500KB,并且链接到了2500KB的共享库,有200KB的stack/heap大小,这200KB中又有100KB位于内存中,100KB位于SWAP空间中,并且加载了1000KB的共享库和400KB的自身二进制文件。则

    RSS: 

    400K + 1000K + 100K = 1500K

    VSZ

    500K + 2500K + 200K = 3200K

    展开全文
  • 最近在嵌入式项目开发中发现的,下面是设备的内存总量及使用:总量是24M左右,项目主程序大小1M不到,但是在默认的系统环境设置下,程序运行起来后的top看起来是这样:VSZ的大小是221MB,所以计算出来的内存使用...

    首先看一个现象,最近在嵌入式项目开发中发现的,下面是设备的内存总量及使用:

    总量是24M左右,项目主程序大小1M不到,但是在默认的系统环境设置下,程序运行起来后的top看起来是这样:

    VSZ的大小是221MB,所以计算出来的内存使用百分比是935.4% = 221MB/24MB.VSZ表示程序使用的总虚拟内存空间大小。在很久之前也曾遇到过同样的现象,只是当时没有去深入了解为什么。刚开始发现这个221MB时,非常地吃惊,无论如何也想不通为什么1M大小不到的程序会需要使用到200M以上的内存空间。

    程序是一个多线程的程序,而且有不少的线程是由线程再次创建的,系统环境是linux2.6.32的内核。通过对其它单进程的VSZ大小观察,发现VSZ的大小好像与程序使用的线程数目成正比关系。因此想到可以通过使用Posix Pthread库的pthread_attr_setstacksize接口来修改线程栈的大小,于是将20多个线程的栈的大小修改为512KB,虽然有点麻烦,但是再次运行,VSZ的确大幅地减少为30MB左右。

    在分析解决问题的过程中,了解到另一个影响应用程序运行栈大小的系统设置:ulimit -s。通过这个命令可以查看系统默认的栈大小以及修改应用运行时的栈大小,默认的8192KB。这里再次分析上面的现象。linux系统中使用clone机制来实现线程,实际上线程就是一个轻量的进程,因此其栈大小依然是遵循系统的ulimit设置来配置的。所以20多个线程的程序在默认8M的栈大小设置下,会使用到200M左右的虚拟内存空间,包括程序的所有栈空间以及数据内存、堆内存和代码内存。

    那么,就可以通过ulimit -s命令修改默认的栈大小,从而达到与调用pthread_attr_setstacksize接口一样的目的和效果。使用ulimit -s 512后,主程序使用的VSZ降低为25M左右,这是因为主线程使用的栈大小也被降低。

    但是使用ulimit的一个后果就是它会影响到同一环境(同一shell或者终端)下后续启动的所有程序,如果修改成启动时设置的话就会影响到整个系统,这显然不是想要的。有两个方法可以能消除这个影响:

    为需要修改栈大小的程序单独编写一个shell脚本,在程序启动前调用ulimit -s。因为子shell的环境不会影响到父shell,所以设置不会改变外部环境。
    在程序运行前执行ulimit -s修改需要的栈大小,在程序运行后再次执行ulimit -s修改回原来的栈大小。
    PS:虽然降低了程序使用的虚拟内存的大小,但是我还是有一个很大的疑问:

    程序使用200M多的虚拟内存和使用20M多的虚拟内存,运行效果没有什么变化,好像没有带来什么有用的性能改善。我能想要的“好处”就是系统在进行地址转换和页面管理时会高效一点,但难道不应该有一些更重要的性能提升吗,不然除了让top内容中的VSZ和%MEM栏更好看合理点外,没必要去费精力调整?期待有人能帮忙解惑。

    展开全文
  • 如何获取cpu占用率 mem使用情况

    万次阅读 2013-01-16 13:24:56
    一、shell下提供top、ps命令查看当前cpu、mem使用情况,简要介绍如下: 1. 使用ps查看进程的资源占用 ps -aux 查看进程信息时,第三列就是CPU占用。 [root@localhost utx86]# ps -aux | grep my_process ...

    一、shell下提供top、ps命令查看当前cpu、mem使用情况,简要介绍如下:

    1. 使用ps查看进程的资源占用

    ps -aux
    查看进程信息时,第三列就是CPU占用。
    [root@localhost utx86]# ps -aux | grep my_process
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
    root   14415  3.4  0.9   37436  20328  pts/12   SL+  14:18   0:05 ./my_process
    root   14464  0.0   0.0   3852   572    pts/3    S+   14:20   0:00 grep my_process
    每一列含义如下
    USER   PID   %CPU %MEM  VSZ  RSS TTY  STAT   START  TIME   COMMAND
    即my_process进程当前占用cpu 3.4%, 内存0.9%
    2. top动态查看系统负荷
    top -n 1
    显示后退出
    [root@localhost utx86]# top -n 1
    top - 14:23:20 up  5:14, 14 users,  load average: 0.00, 0.04, 0.01
    Tasks: 183 total,   1 running, 181 sleeping,   1 stopped,   0 zombie
    Cpu(s):  1.8%us,  1.4%sy,  0.0%ni, 95.8%id,  0.7%wa,  0.1%hi,  0.2%si,  0.0%st
    Mem:   2066240k total,  1507316k used,   558924k free,   190472k buffers
    Swap:  2031608k total,       88k used,  2031520k free,  1087184k cached
    1)获取cpu占用情况

    [root@localhost utx86]# top -n 1 |grep Cpu
    Cpu(s):  1.9%us,  1.3%sy,  0.0%ni, 95.9%id,  0.6%wa,  0.1%hi,  0.2%si,  0.0%st
    解释:1.9%us是用户占用cpu情况
    1.3%sy,是系统占用cpu情况
    得到具体列的值:
    [root@localhost utx86]# top -n 1 |grep Cpu | cut -d "," -f 1 | cut -d ":" -f 2
    1.9%us
    [root@localhost utx86]# top -n 1 |grep Cpu | cut -d "," -f 2
    1.3%sy
    2)获得内存占用情况
    [root@localhost utx86]# top -n 1 |grep Mem
    Mem:   2066240k total,  1515784k used,   550456k free,   195336k buffers
    获得内存情况指定列
    [root@localhost c++_zp]# top -n 1 |grep Mem | cut -d "," -f 1 | cut -d ":" -f 2
    2066240k total
    [root@localhost c++_zp]# top -n 1 |grep Mem | cut -d "," -f 2
    1585676k used
    二、采用编程实现查看cpu占用率和 mem使用情况
    现在可以通过程序将cpu使用率、内存使用情况保存到文件中
    // test.cpp
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    int main()
    {
    system("top -n 1 |grep Cpu | cut -d \",\" -f 1 | cut -d \":\" -f 2 >cpu.txt");
    system("top -n 1 |grep Cpu | cut -d \",\" -f 2 >>cpu.txt");
    system("top -n 1 |grep Mem | cut -d \",\" -f 1 | cut -d \":\" -f 2 >>cpu.txt");
    system("top -n 1 |grep Mem | cut -d \",\" -f 2 >>cpu.txt");
    return 0;
    }
    编译、运行:
    [root@localhost study]# g++ test.cpp
    [root@localhost study]# ./a.out
    [root@localhost study]# cat cpu.txt
    2.1%us
    1.5%sy
    2066240k total
    1619784k used

    三、硬盘使用率编程实现

    1.硬盘使用率 命令df -lh

    2.程序实现,调用statfs

    c/c++程序:

    int statfs(const char *path, struct statfs *buf); 
    int fstatfs(int fd, struct statfs *buf); 
    struct statfs { 
    long    f_type;    /* type of filesystem (see below) */ 
    long    f_bsize;    /* optimal transfer block size */ 
    long    f_blocks;  /* total data blocks in file system */ 
    long    f_bfree;    /* free blocks in fs */ 
    long    f_bavail;  /* free blocks avail to non-superuser */ 
    long    f_files;    /* total file nodes in file system */ 
    long    f_ffree;    /* free file nodes in fs */ 
    fsid_t  f_fsid;    /* file system id */ 
    long    f_namelen;  /* maximum length of filenames */ 
    };
    
    int fstatvfs(int fildes, struct statvfs *buf); 
    int statvfs(const char *restrict path, struct statvfs *restrict buf);
    struct statvfs { 
    unsigned long  f_bsize;    /* file system block size */ 
    unsigned long  f_frsize;  /* fragment size */ 
    fsblkcnt_t    f_blocks;  /* size of fs in f_frsize units */ 
    fsblkcnt_t    f_bfree;    /* # free blocks */ 
    fsblkcnt_t    f_bavail;  /* # free blocks for non-root */ 
    fsfilcnt_t    f_files;    /* # inodes */ 
    fsfilcnt_t    f_ffree;    /* # free inodes */ 
    fsfilcnt_t    f_favail;  /* # free inodes for non-root */ 
    unsigned long  f_fsid;    /* file system id */ 
    unsigned long  f_flag;    /* mount flags */ 
    unsigned long  f_namemax;  /* maximum filename length */ 
    };
    
    #include <sys/vfs.h> 
    #include <sys/statvfs.h> 
    #include <string.h> 
    #include <stdlib.h> 
    #include <stdio.h> 
    int gethd(char *path); 
    int main() 
    { 
    char buf[256],*ptr; 
    FILE *file; 
    while(1) 
    { 
    file=fopen("/etc/fstab","r"); 
    if(!file)return; 
    memset(buf,0,sizeof(buf)); 
    while(fgets(buf,sizeof(buf),file)) 
    { 
    ptr=strtok(buf," "); 
    if(ptr&&((strncmp(ptr,"/dev",4)==0))) 
    { 
    ptr=strtok(NULL," "); 
    gethd(ptr); 
    } 
    } 
    fclose(file); 
    sleep(2); 
    } 
    }
    int gethd(char *path) 
    { 
    struct statvfs stat1; 
    statvfs(path,&stat1); 
    if(stat1.f_flag) 
    printf("%s total=%dK free=%dK %0.1f%%
    \n",path,stat1.f_bsize*stat1.f_blocks/1024,stat1.f_bsize*stat1.f_bfree/1024,
    ((float)stat1.f_blocks-(float)stat1.f_bfree)/(float)stat1.f_blocks*100); 
    }

     

    java:

     

    import java.io.*;  
    /** 
    * linux 下cpu 内存 磁盘 jvm的使用监控 
    * @author avery_leo 
    * 
    */ 
    public class TT {   
    /** 
    * 获取cpu使用情况 
    * @return 
    * @throws Exception 
    */ 
    public double getCpuUsage() throws Exception {   
    double cpuUsed = 0;  
            Runtime rt = Runtime.getRuntime();   
    Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令  
            BufferedReader in = null;   
    try {   
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));   
    String str = null;   
    String[] strArray = null;   
    
    while ((str = in.readLine()) != null) {   
    int m = 0;   
    
    if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&   
    
    strArray = str.split(" ");   
    for (String tmp : strArray) {   
    if (tmp.trim().length() == 0)   
    continue;   
    if (++m == 9) {// 第9列为CPU的使用百分比(RedHat   
    
    cpuUsed += Double.parseDouble(tmp);  
                            }  
                        }  
                    }   
    }   
    } catch (Exception e) {   
    e.printStackTrace();   
    } finally {   
    in.close();   
    }   
    return cpuUsed;   
    }   

    /** 
    * 内存监控 
    * @return 
    * @throws Exception 
    */ 
    public double getMemUsage() throws Exception {  
            double menUsed = 0;   
    Runtime rt = Runtime.getRuntime();   
    Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令  
            BufferedReader in = null;   
    try {   
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));   
    String str = null;   
    String[] strArray = null;   
    
    while ((str = in.readLine()) != null) {   
    int m = 0;   
    
    if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&   
    //    
    // System.out.println("------------------3-----------------");   
    strArray = str.split(" ");   
    for (String tmp : strArray) {   
    if (tmp.trim().length() == 0)   
    continue;  
                            if (++m == 10) {   
    // 9)--第10列为mem的使用百分比(RedHat 9)  
                                menUsed += Double.parseDouble(tmp);  
                            }   
    }  
                    }   
    }   
    } catch (Exception e) {   
    e.printStackTrace();   
    } finally {   
    in.close();   
    }   
    return menUsed;   
    }  
        /** 
    * 获取磁盘空间大小 
    *   
    * @return 
    * @throws Exception 
    */ 
    public double getDeskUsage() throws Exception {   
    double totalHD = 0;   
    double usedHD = 0;   
    Runtime rt = Runtime.getRuntime();   
    Process p = rt.exec("df -hl");//df -hl 查看硬盘空间  
            BufferedReader in = null;   
    try {   
    in = new BufferedReader(new InputStreamReader(p.getInputStream()));   
    String str = null;   
    String[] strArray = null;   
    int flag = 0;   
    while ((str = in.readLine()) != null) {   
    int m = 0;   
    //              if (flag > 0) {   
    //                  flag++;   
    strArray = str.split(" ");   
    for (String tmp : strArray) {   
    if (tmp.trim().length() == 0)   
    continue;   
    ++m;   
    //                      System.out.println("----tmp----" + tmp);   
    if (tmp.indexOf("G") != -1) {   
    if (m == 2) {   
    //                              System.out.println("---G----" + tmp);   
    if (!tmp.equals("") && !tmp.equals("0"))   
    totalHD += Double.parseDouble(tmp   
    .substring(0, tmp.length() - 1)) * 1024;  
                                }   
    if (m == 3) {   
    //                              System.out.println("---G----" + tmp);   
    if (!tmp.equals("none") && !tmp.equals("0"))   
    usedHD += Double.parseDouble(tmp.substring(   
    0, tmp.length() - 1)) * 1024;  
                                }   
    }   
    if (tmp.indexOf("M") != -1) {   
    if (m == 2) {   
    //                              System.out.println("---M---" + tmp);   
    if (!tmp.equals("") && !tmp.equals("0"))   
    totalHD += Double.parseDouble(tmp   
    .substring(0, tmp.length() - 1));  
                                }   
    if (m == 3) {   
    //                              System.out.println("---M---" + tmp);   
    if (!tmp.equals("none") && !tmp.equals("0"))   
    usedHD += Double.parseDouble(tmp.substring(   
    0, tmp.length() - 1));   
    // System.out.println("----3----" + usedHD);   
    }   
    }   
    
    }  
    //              }   
    }   
    } catch (Exception e) {   
    e.printStackTrace();   
    } finally {   
    in.close();   
    }   
    return (usedHD / totalHD) * 100;   
    }  
        public static void main(String[] args) throws Exception {   
    TT cpu = new TT();   
    System.out.println("---------------cpu used:" + cpu.getCpuUsage() + "%");   
    System.out.println("---------------mem used:" + cpu.getMemUsage() + "%");   
    System.out.println("---------------HD used:" + cpu.getDeskUsage() + "%");   
    System.out.println("------------jvm监控----------------------");   
    Runtime lRuntime = Runtime.getRuntime();   
    System.out.println("--------------Free Momery:" + lRuntime.freeMemory()+"K");   
    System.out.println("--------------Max Momery:" + lRuntime.maxMemory()+"K");   
    System.out.println("--------------Total Momery:" + lRuntime.totalMemory()+"K");   
    System.out.println("---------------Available Processors :" 
    + lRuntime.availableProcessors());   
    }   
    }


    shell程序

     

    监视磁盘hda1

    #!/bin/sh
    # disk_mon
    # monitor the disk space
    # get percent column and strip off header row from df
    LOOK_OUT=0
    until [ "$LOOK_OUT" -gt "90" ]
    do
      LOOK_OUT=`df | grep /hda1 | awk '{print $5}' | sed 's/%//g'`
      echo $LOOK_OUT%
      sleep 1
    done
    
    echo "Disk hda1 is nearly full!"
     
    hdtest.sh

    #!/bin/ksh

    #检测硬盘剩余空间并警告的shell&nbspV050921

    #简单说明: 可由root用户将此脚本加入crontab,启动时间一般最好设为每天营业前,当此脚本启动时如检测到已用硬盘空间超过指定范围,则将hdwarning.sh脚本拷贝到指定用户根目录下;否则将删除指定用户的目录下的hdwarning.sh脚本.

    usedhd=80           #自定义超限已用硬盘空间大小比例,默认为80%
    test "$1" &&&nbspuserdir=$1 ||&nbspuserdir=/usr/scabs  #前台用户的目录(默认设为统版用户),也可在调用此脚本时加上指定前台用户的目录参数

    hdwarning=$(df&nbsp-v |sed '1d;s/.$//;s/\/dev\///'|awk '$6>'"$usedhd"' {print $2," = ",$6"%"}')
    test "$hdwarning" && {&nbspcp /usr/bin/hdwarning.sh ${userdir}/hdwarning.sh  \
    > ${userdir}/hdwarning.log &nbspchmod&nbsp777 ${userdir}/hdwarning.sh ${userdir}/hdwarning.log  } \
    || {&nbsprm ${userdir}/hdwarning.sh&nbsp2>/dev/null  \
    mv ${userdir}/hdwarning.log ${userdir}/hdwarning.log.bak&nbsp2>/dev/null  }

    hdwarning.sh

    #!/bin/ksh
    #检测硬盘剩余空间并警告的shell&nbspV050921
    #增加当超标时,只在预先指定的前N位预先的指定用户登录时才显示提示信息,
    #即只有这前面N位用户才有可能及时反馈,避免当超标时接到过多的前台反馈电话&nbspV050923

    #请先编辑指定用户根下的&nbsp.profile ,在最后追加一行
    # &nbsptest&nbsp-x&nbsphdwarning.sh && &nbsp./hdwarning.sh
    #若.profile最后已加入了自启动专用程序命令行,则请在此行前面插入上述行

    #简单说明: 当指定用户登录后,若当前目录中hdwarning.sh脚本存在(一般此
    #时硬盘已用空间已经超标),则运行此脚本,并在屏幕显示警告信息,此时终端
    #操作人员应该及时将此信息把馈给预先指定的部门或预先指定的管理人员,
    #以便作相应的处理.若未超标或已清理磁盘文件并达标,则将删除脚本自身
    #hdwarning.sh(取消登录时的检测和警告信息)

    usedhd=80               #自定义超限已用硬盘空间大小比例,默认为80%
    loginnum=10             #自定义最初登录反馈的用户数,默认为前&nbsp10 位
    name="运维部"           #接受反馈的部门或管理人员  
    tel="2113714&nbsp2110394"   #接受反馈的部门或管理人员的联系方式或电话
    test "$1" &&&nbspuserdir=$1 ||&nbspuserdir=/usr/scabs  #前台用户的目录(默认设为统版用户),也可在调用此
    #脚本时加上指定前台用户的目录参数
    hdwaring()
    {&nbspttyname=$(tty)
    echo ${ttyname##*

     


     

    shell cpu====================================================================:

    /proc目路下的内存文件系统映射了系统的运行时的一些信息,包括进程列表,
    内存信息,CPU使用情况,还有网络等等
    所以可以通过读/proc下的文件来实现统计信息的获取
    但是,要注意的时不同的版本,将/proc下的每个文件中的类容会有一些差别,每一个项代表什么要自己分析,最好根据top的输出去分析
    然后就可以通过shell教本或者C取得CPU使用率
    比如:
    我的机子是AS4(Kernel 2.6.9-5)
    cat /proc/stat
    cpu  1047871 11079 394341 1157538880 4909104 1945 61338
    cpu0 352894 2950 157917 290318045 109839 0 49564
    cpu1 234860 1978 115148 288108962 2522748 1028 6391
    cpu2 106253 1674 52273 288601985 2225180 909 2839
    cpu3 353863 4477 69001 290509888 51337 6 2543
    intr 3021292348 2939335896 720 0 12 12 0 7 2 1 0 0 0 1951 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7217173 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 74736544 0 0 0 0 0 0 0 0 0 0 0 0 0
    ctxt 379682110
    btime 1158715143
    processes 603543
    procs_running 1
    procs_blocked 0
    然后就可以自己计算了

    1. #########GetCPU.sh
    2. ######Author:duanjigang
    3. #!/bin/sh
    4. while true
    5. do
    6. awk  '$1=="cpu"{Total=$2+$3+$4+$5+$6+$7;print "Free: " $5/Total*100"%
    7. " " Used: " (Total-$5)*100/Total"%"}' </proc/stat
    8. sleep 1
    9. done
    复制代码

    #./GetCPU.sh
    Free: 99.4532% Used: 0.546814%
    Free: 99.4532% Used: 0.546813%
    Free: 99.4532% Used: 0.546813%
    Free: 99.4532% Used: 0.546813%
    这样应该可以的


     

     

     

    shell cpu MEM====================================================================:


    (1):取CPU使用率
    机器:LinuxAS4 2.6.9-5.ELsmp (不通版本的内核会有差异的)
    1. #cpu.sh-to get the utilization of every cpu
    2. #author:duanjigang<2006/12/28>
    3. #!/bin/sh
    4. awk '$0 ~/cpu[0-9]/' /proc/stat  | while read line
    5. do
    6. echo "$line" | awk '{total=$2+$3+$4+$5+$6+$7+$8;free=$5;\
    7.                print$1" Free "free/total*100"%",\
    8.                 "Used " (total-free)/total*100"%"}'
    9. done
    复制代码

    #chmod +x cpu.sh
    #./cpu.sh
    cpu0 Free 99.7804% Used 0.219622%
    cpu1 Free 99.8515% Used 0.148521%
    cpu2 Free 99.6632% Used 0.336765%
    cpu3 Free 99.6241% Used 0.375855%

    (2)网络流量情况
    1. #if.sh-to get the network flow of each interface
    2. #for my beloved ning
    3. #author:duanjigang<2006/12/28>
    4. #!/bin/sh
    5. echo "name    ByteRec   PackRec   ByteTran   PackTran"
    6. awk   ' NR>2' /proc/net/dev  | while read line
    7. do
    8. echo "$line" | awk -F ':' '{print "  "$1"  " $2}' |\
    9.        awk '{print $1"   "$2 "    "$3"   "$10"  "$11}'
    10. done
    复制代码

    #./if.sh
    name    ByteRec   PackRec   ByteTran   PackTran
    lo   2386061    17568   2386061  17568
    eth0   1159936483    150753251   190980687  991835
    eth1   0    0   0  0
    sit0   0    0   0  0

    (3):端口情况
    http://bbs.chinaunix.net/viewthread.php?tid=864757&highlight=duanjigang
    (4)至于内存
    cat /proc/meminfo | grep "MemTotal"
    cat /rpco/meninfo  | grep "MemFree"
    就可以了吧
    展开全文
  • linux ps 命令的结果中VSZ,RSS,STAT的含义大小 ps是linux系统的进程管理工具,相当于windows中的资源管理器的一部分功能。 一般来说,ps aux命令执行结果的几个列的信息...%MEM 进程占用内存百分比 VSZ 虚拟...

    linux ps 命令的结果中VSZ,RSS,STAT的含义和大小

    ps是linux系统的进程管理工具,相当于windows中的资源管理器的一部分功能。

    一般来说,ps aux命令执行结果的几个列的信息分别是:

    USER      进程所属用户
    PID          进程ID
    %CPU     进程占用CPU百分比
    %MEM    进程占用内存百分比
    VSZ         虚拟内存占用大小      单位:kb(killobytes)
    RSS        实际内存占用大小       单位:kb(killobytes)
    TTY         终端类型
    STAT      进程状态
    START   进程启动时刻
    TIME      进程运行时长
    COMMAND 启动进程的命令

    参考资料:http://www.linfo.org/ps.html

    转载于:https://www.cnblogs.com/jingzhishen/p/5104466.html

    展开全文
  • 编程获取Linux的cpu占用率和mem使用情况 Linux下提供top、ps命令查看当前cpu、mem使用情况,简要介绍如下: 一、使用ps查看进程的资源占用 ps -aux 查看进程信息时,第三列就是CPU占用。 [root...
  • Linux下提供top、ps命令查看当前cpu、mem使用情况,简要介绍如下: 一、使用ps查看进程的资源占用 ps -aux 查看进程信息时,第三列就是CPU占用。 [root@localhost utx86]# ps -aux | grep my_process Warning: ...
  • 其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。 接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。 ...
  • Linux下提供top、ps命令查看当前cpu、mem使用情况,简要介绍如下: 一、使用ps查看进程的资源占用 ps -aux 查看进程信息时,第三列就是CPU占用。 [root@localhost utx86]# ps -aux | grep my_process
  • 内存泄漏定位思路方法

    千次阅读 2020-03-27 22:55:10
    本文主要针对基于Linux操作系统,提供了一种通用的内存泄漏定位分析思路方法。 1. 查看内存概况 [root@VM_0_17_centos ~]# free total used free shared buff/cache available Mem: 1883844 376664 7...
  • linux ps命令,查看进程cpu和内存占用率排序 使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 %MEM 进程的内存占用率 VSZ 进程所...
  • linux ps命令,查看进程cpu和内存占用率排序 使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 %MEM 进程的内存占用率 VSZ 进程所...
  • Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以...
  • #内存泄露# linux常用内存相关命令

    万次阅读 2020-06-19 11:14:34
     free 命令会显示系统内存的使用情况,包括物理内存、交换内存(swap)内核缓冲区内存等。 $ free total used free shared buff/cache available Mem: 8047480 6142828 154116 465584 1750536 1078080 Swap: ...
  • Linux系统查看一个进程占用的CPU和内存 top命令 top -p pid top -p 7746 # 查看进程的信息 top - 10:33:32 up 247 days, 22:26, 1 user, load average: 0.22, 0.08, 0.02 Tasks: 1 total, 0 running, 1 sleeping, 0...
  • 查询内存占用: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最高的三个,K=3 说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来...
  • Linux 服务器内存处理相关

    千次阅读 2019-12-24 20:09:00
    文章目录Linux 服务器内存处理相关1、free 命令2、查看进程的内存占用情况3、查看内存占用最高的前204、动态查看内存的使用情况 Linux 服务器内存处理相关 1、free 命令 以kb形式查看内存使用情况 free total ...
  • linux ps命令,查看进程cpu和内存占用率排序 使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 %MEM 进程的内存占用率 VSZ ...
  • 【Git学习】解决GitLab内存消耗大的问题

    万次阅读 多人点赞 2018-11-20 09:27:42
    一、问题描述 今天有提示反馈Gitlab服务器push不上去,让我看看是不是Gitlab服务器出了什么问题。...使用 free命令查看了下内存情况,我艹,太猛了吧,使用了60个G,内存只剩2.6G了。 刚想继续操作,就...
  • 内存泄漏,内存黑洞问题定位 1. free查看内存概况 [root@VM_0_17_centos ~]# free total used free shared buff/cache available Mem: 1883844 376664 76136 192 1431044 1311252 Swap: 1048572 30540 10

空空如也

空空如也

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

内存vsz和mem