首页 > 系统相关 >Linux笔记-top命令信息详解

Linux笔记-top命令信息详解

时间:2022-10-20 11:12:40浏览次数:71  
标签:43876 20 1234567 process top xxx 详解 Linux your

目录

参考资料

https://segmentfault.com/a/1190000013504502
https://blog.csdn.net/shanlijia/article/details/124670772
https://blog.csdn.net/dillanzhou/article/details/82876575
https://blog.csdn.net/weixin_40734030/article/details/125558689

top命令详解

top

PID        USER    PR  NI  VIRT  RES      SHR  S  %CPU  %MEM     TIME+ COMMAND 

PID:进程id
USER:进程所有者
PR:进程的优先级,越小优先级越高
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存,单位是kb
RES:进程使用的物理内存,单位kb
SHR:进程使用的共享内存,单位kb
S:进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
%CPU:进程占用的CPU使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:命令行

VIRT/RES/SHR含义
VIRT 意味着进程虚拟空间的大小, 是真实使用的内存,加上映射进程自己使用的内存(如, X server使用显卡内存), 加上映射磁盘文件使用的内存(主要是加载共享程序库文件), 加上与其他进程共享的内存. VIRT代表进程当前时刻有多少内存可以访问.
RES 意味驻留内存大小, 是当前进程真正占用物理内存的精确反映. (直接与%MEM列相对应.) RES始终要比VIRT小, 因为多数程序依赖C库文件.
SHR 表示VIRT里有多少其实是共享部分(库文件使用的内存). 关系到库文件里, 并不是整个的库文件会驻留. 如, 如果程序仅用到了库文件里的少数函数, 整个库文件会映射并被计算到VIRT和SHR里, 但只有库文件包含用到的函数那部分真正加载到内存并被计算到RES里.

top | grep your_process
PID        USER    PR  NI  VIRT  RES      SHR  S  %CPU  %MEM     TIME+ COMMAND 
1234567 xxx       20   0 5430600 824588  43876 S  60.7   0.4   0:20.11 your_process                                                                                                                                                                    
1234567 xxx       20   0 5496136 895504  43876 S 104.7   0.5   0:23.25 your_process                                                                                                                                                                    
1234567 xxx       20   0 5561672 967576  43876 S 104.7   0.5   0:26.40 your_process                                                                                                                                                                    
1234567 xxx       20   0 5627208   1.0g  43876 S 104.7   0.5   0:29.54 your_process                                                                                                                                                                    
1234567 xxx       20   0 5758280   1.1g  43876 S 104.7   0.6   0:32.69 your_process                                                                                                                                                                    
1234567 xxx       20   0 5823816   1.1g  43876 S 105.0   0.6   0:35.84 your_process                                                                                                                                                                    
1234567 xxx       20   0 5889352   1.2g  43876 S 104.7   0.6   0:38.98 your_process                                                                                                                                                                    
1234567 xxx       20   0 5954888   1.3g  43876 S 104.3   0.7   0:42.12 your_process                                                                                                                                                                    
1234567 xxx       20   0 6020424   1.3g  43876 S 105.0   0.7   0:45.27 your_process                                                                                                                                                                    
1234567 xxx       20   0 6085960   1.4g  43876 S 104.3   0.8   0:48.40 your_process                                                                                                                                                                    
1234567 xxx       20   0 6151496   1.5g  43876 S 104.3   0.8   0:51.54 your_process                                                                                                                                                                    
1234567 xxx       20   0 6217032   1.5g  43876 S 105.0   0.8   0:54.69 your_process                                                                                                                                                                    
1234567 xxx       20   0 6282280   1.6g  43876 S 104.3   0.9   0:57.82 your_process                                                                                                                                                                    
1234567 xxx       20   0 6413352   1.7g  43876 S 103.7   0.9   1:00.94 your_process                                                                                                                                                                    
1234567 xxx       20   0 6478888   1.8g  43876 S 104.3   0.9   1:04.07 your_process                                                                                                                                                                    
1234567 xxx       20   0 6544424   1.8g  43876 S 104.0   1.0   1:07.19 your_process                                                                                                                                                                    
1234567 xxx       20   0 6609960   1.9g  43876 S 103.7   1.0   1:10.31 your_process                                                                                                                                                                    
1234567 xxx       20   0 6675496   2.0g  43876 S 104.3   1.0   1:13.44 your_process                                                                                                                                                                    
1234567 xxx       20   0 6741032   2.0g  43876 S 104.3   1.1   1:16.58 your_process                                                                                                                                                                    
1234567 xxx       20   0 6806568   2.1g  43876 S 104.3   1.1   1:19.71 your_process                                                                                                                                                                    
1234567 xxx       20   0 6872104   2.2g  43876 S 104.7   1.2   1:22.85 your_process                                                                                                                                                                    
1234567 xxx       20   0 6937640   2.2g  43876 S 104.0   1.2   1:25.98 your_process                                                                                                                                                                    
1234567 xxx       20   0 7068712   2.3g  43876 S 104.0   1.2   1:29.10 your_process                                                                                                                                                                    
1234567 xxx       20   0 7446828   2.4g  43940 S  43.5   1.3   1:30.41 your_process

使用/proc/self/status

可以通过/proc/self/status获取当前进程的状态信息
这个目录比较特殊。 众所周知可以通过/proc/$pid/来获取指定进程的信息,如果某个进程想要获取本进程的信息,就可以通过进程的pid来访问/proc/$pid/目录。但是这个方法还需要获取进程pid,在fork、daemon等情况下pid还可能发生变化。为了更方便的获取本进程的信息,linux提供了/proc/self/目录,这个目录比较独特,内容等价于/proc/本进程pid/。
如下所示, /proc/self软链到了本进程pid的目录

[]$ ls -l /proc/self
lrwxrwxrwx 1 root root 0 Oct 19 16:18 /proc/self -> 4139459
[]$ ls -l /proc/self
lrwxrwxrwx 1 root root 0 Oct 19 16:18 /proc/self -> 4139536
[]$ ls -l /proc/self
lrwxrwxrwx 1 root root 0 Oct 19 16:18 /proc/self -> 4139537
[]$ ls -l /proc/self
lrwxrwxrwx 1 root root 0 Oct 19 16:18 /proc/self -> 4139538

注入代码监控某段代码执行前后进程内存状态

int parseLine(char *line) {
    // This assumes that a digit will be found and the line ends in " Kb".
    int i = strlen(line);
    const char *p = line;
    while (*p < '0' || *p > '9') p++;
    line[i - 3] = '\0';
    i = atoi(p);
    return i;
}

// 虚拟内存和物理内存,单位为kb
typedef struct {
    uint32_t virtualMem;
    uint32_t physicalMem;
} processMem_t;

processMem_t GetProcessMemory() {
    FILE *file = fopen("/proc/self/status", "r");
    char line[128];
    processMem_t processMem;

    while (fgets(line, 128, file) != NULL) {
        if (strncmp(line, "VmSize:", 7) == 0) {
            processMem.virtualMem = parseLine(line);
            break;
        }

        if (strncmp(line, "VmRSS:", 6) == 0) {
            processMem.physicalMem = parseLine(line);
            break;
        }
    }
    fclose(file);
    return processMem;
}

  std::cout << "physicalMem before: "<< GetProcessMemory().physicalMem << std::endl;
  std::cout << "virtualMem before: "<< GetProcessMemory().virtualMem << std::endl;
  // 要监测的部分
  std::cout << "physicalMem before: "<< GetProcessMemory().physicalMem << std::endl;
  std::cout << "virtualMem before: "<< GetProcessMemory().virtualMem << std::endl;

打印日志:

physicalMem before: 3741185024
virtualMem before: 5684040
physicalMem after: 3741184304
virtualMem after: 7322152

top命令结果
top命令信息

可见virtualMem与top命令的VIRT一致

标签:43876,20,1234567,process,top,xxx,详解,Linux,your
From: https://www.cnblogs.com/gnivor/p/16809030.html

相关文章

  • 日志管理工具 - journalctl使用详解
    说明:  CentOS7以后版,利用Systemd统一管理所有Unit的启动日志。可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。journalctl配置文件:/etc/systemd/jo......
  • JDBC各个类详解-Statement以及JDBC练习-insert语句
    JDBC各个类详解-Statement执行sql1.booleanexecute(Stringsql):可以执行任意sql语句,了解2.intexecuteUpdate(Stringsql):执行DML(insertupdatedelete)语句,D......
  • Linux shell 常用函数
    *以下函数或文件,在某些发行版本系统不支持,请先测试确认是否可用。 ####  生成连续的数字  ####  方式一: [1]正序:{1..16}倒序:{16..1}示例:forni......
  • 如何查看linux kernel邮件列表【转】
    转自:https://blog.csdn.net/jasonactions/article/details/1207764341.前言本文主要总结浏览kernelpatch的方法,以此希望促成自己养成阅读patch的习惯。用一个朋友的话说......
  • 已整理-Linux正则表达式
     目录:1、基本正则表达式2、扩展正则表达式3、示例 1、基本正则表达式1.1、字符匹配.匹配任意单个字符,不含空格[]......
  • Linux 启用rsyslog的启用网络日志服务
    网络日志服务功能:  将多个远程主机的日志集中发送到一台日志服务器上存储,方便后期的管理。说明:  rsyslog服务和apache、php一样基于模块化设计,需要启用对应的功能就......
  • Linux软链接的创建与删除
    软链接的创建:ln -s  [源文件或目录] [目标文件或目录]软链接的删除 rm–rf软链接名称(请注意不要在后面加”/”) ......
  • [Linux传奇]Linux之前,Unix的历史.
    [Linux传奇]Linux之前,Unix的历史一个伟大的梦想-----Multics在很久很久以前,有一个伟大的计划-----Multics.Multics是一个分时操作系统,该系统开始作为一个合资项目,是196......
  • 【2022.10.20】Linux入门基础(3)
    内容概要1.目录结构说明2.重要目录数据信息3.网络不通排查流程4.etc目录下重要的数据文件5.usr目录下重要的数据文件6.proc目录下重要的数据文件7.系统优化相关......
  • Linux:论如何在虚拟机上挂载多个镜像?
    欢迎来到千汐 博客名称:千汐染琼博客网址:https://www.cnblogs.com/zhangxiaomin/寄语:无数次从睡梦中醒来,忘记了我是谁worldcookie 我可能是第一个提出这个疑问......