zoukankan      html  css  js  c++  java
  • Linux /proc 内存相关信息

    Linux系统的文件类型大致可分为三类: 普通文件, 目录文件和伪文件. 伪文件不是用来存储数据的, 因此这些文件不占用磁盘空间, 只是存在于内存中. /proc 让你可以与内核内部数据进行交互, 获取有关进程的有用信息.

    下面主要介绍一下 /proc 下面的四个文件: /proc/stat , /proc/meminfo /proc/<pid>/stat /proc/<pid>/status .

    /proc/stat 存放系统的cpu时间, 该文件包含了所有cpu活动的信息.

    /proc/meminfo 存放系统的内存信息, 通过文件中各个变量的名字便可知其代表的信息.

    /proc/<pid>/stat 存放某个进程的cpu信息

    /proc/<pid>/status 存放某个进程的cpu信息以及一些综合信息

    more /proc/2674/cmdline
    mem — 当前进程所占用的内存空间,由open、read和lseek等系统调用使用,不能被用户读取;
    statm — 当前进程占用内存的状态信息,通常以“页面”(page)表示;

    status — 与stat所提供信息类似,但可读性较好,如下所示,每行表示一个属性信息;其详细介绍请参见 proc的man手册页;

    task — 目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;(内核2.6版本以后支持此功能)

    /proc/iomem 
    每个物理设备上的记忆体(RAM或者ROM)在系统内存中的映射信息; 

    [root@rhel5 ~]# more /proc/iomem 
    00000000-0009f7ff : System RAM
    0009f800-0009ffff : reserved
    000a0000-000bffff : Video RAM area
    000c0000-000c7fff : Video ROM
      …………







    /proc/kcore
    系统使用的物理内存,以ELF核心文件(core file)格式存储,其文件大小为已使用的物理内存(RAM)加上4KB;这个文件用来检查内核数据结构的当前状态,因此,通常由GBD通常调试工具使用,但不能使用文件查看命令打开此文件;

    /proc/loadavg 
    保存关于CPU和磁盘I/O的负载平均值,其前三列分别表示每1秒钟、每5秒钟及每15秒的负载平均值,类似于uptime命令输出的相关信息;第四列是由斜线隔开的两个数值,前者表示当前正由内核调度的实体(进程和线程)的数目,后者表示系统当前存活的内核调度实体的数目;第五列表示此文件被查看前最近一个由内核创建的进程的PID;
    [root@rhel5 ~]# more /proc/loadavg 
    0.45 0.12 0.04 4/125 5549

    [root@rhel5 ~]# uptime
    06:00:54 up  1:06,  3 users,  load average: 0.45, 0.12, 0.04


    /proc/meminfo 
    系统中关于当前内存的利用状况等的信息,常由free命令使用;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值; 

    [root@rhel5 ~]# less /proc/meminfo 
    MemTotal:       515492 kB
    MemFree:          8452 kB
    Buffers:         19724 kB
    Cached:         376400 kB
    SwapCached:          4 kB
    …………

    /proc/modules 
    当前装入内核的所有模块名称列表,可以由lsmod命令使用,也可以直接查看;如下所示,其中第一列表示模块名,第二列表示此模块占用内存空间大小,第三列表示此模块有多少实例被装入,第四列表示此模块依赖于其它哪些模块,第五列表示此模块的装载状态(Live:已经装入;Loading:正在装入;Unloading:正在卸载),第六列表示此模块在内核内存(kernel memory)中的偏移量; 

    [root@rhel5 ~]# more /proc/modules 
    autofs4 24517 2 - Live 0xe09f7000
    hidp 23105 2 - Live 0xe0a06000
    rfcomm 42457 0 - Live 0xe0ab3000
    l2cap 29505 10 hidp,rfcomm, Live 0xe0aaa000
    …………

    /proc/stat 
    实时追踪自系统上次启动以来的多种统计信息;如下所示,其中, 
    “cpu”行后的八个值分别表示以1/100(jiffies)秒为单位的统计值(包括系统运行于用户模式、低优先级用户模式,运系统模式、空闲模式、I/O等待模式的时间等); 
    “intr”行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数; 
    “ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。 
    “btime”给出了从系统启动到现在为止的时间,单位为秒; 
    “processes (total_forks) 自系统启动以来所创建的任务的个数目; 
    “procs_running”:当前运行队列的任务的数目; 
    “procs_blocked”:当前被阻塞的任务的数目; 

    [root@rhel5 ~]# more /proc/stat
    cpu  2751 26 5771 266413 2555 99 411 0
    cpu0 2751 26 5771 266413 2555 99 411 0
    intr 2810179 2780489 67 0 3 3 0 5 0 1 0 0 0 1707 0 0 9620 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 5504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12781 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
    ctxt 427300
    btime 1234084100
    processes 3491
    procs_running 1
    procs_blocked 0


    /proc/swaps 
    当前系统上的交换分区及其空间利用信息,如果有多个交换分区的话,则会每个交换分区的信息分别存储于/proc/swap目录中的单独文件中,而其优先级数字越低,被使用到的可能性越大;下面是作者系统中只有一个交换分区时的输出信息; 

    [root@rhel5 ~]# more /proc/swaps 
    Filename                                Type            Size    Used    Priority
    /dev/sda8                               partition       642560  0       -1


    /proc/vmstat 
    当前系统虚拟内存的多种统计数据,信息量可能会比较大,这因系统而有所不同,可读性较好;下面为作者机器上输出信息的一个片段;(2.6以后的内核支持此文件) 

    [root@rhel5 ~]# more /proc/vmstat 
    nr_anon_pages 22270
    nr_mapped 8542
    nr_file_pages 47706
    nr_slab 4720
    nr_page_table_pages 897
    nr_dirty 21
    nr_writeback 0
    …………

    /proc/zoneinfo 
    内存区域(zone)的详细信息列表,信息量较大,下面列出的是一个输出片段: 

    [root@rhel5 ~]# more /proc/zoneinfo 
    Node 0, zone      DMA
      pages free     1208
            min      28
            low      35
            high     42
            active   439
            inactive 1139
            scanned  0 (a: 7 i: 30)
            spanned  4096
            present  4096
        nr_anon_pages 192
        nr_mapped    141
        nr_file_pages 1385
        nr_slab      253
        nr_page_table_pages 2
        nr_dirty     523
        nr_writeback 0
        nr_unstable  0
        nr_bounce    0
            protection: (0, 0, 296, 296)
      pagesets
      all_unreclaimable: 0
      prev_priority:     12
      start_pfn:         0
    …………


    /proc/diskstats
    每块磁盘设备的磁盘I/O统计信息列表;(内核2.5.69以后的版本支持此功能)

    /proc/cpuinfo
    处理器的相关信息的文件;

  • 相关阅读:
    Nginx 学习笔记(七)如何解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
    jQuery基础 (四)——使用jquery-cookie 实现点赞功能
    Travis CI实现持续部署
    三大云安全工具(CASB、CSPM、CWPP)的使用场景
    数据访问安全代理 CASB
    SDP(软件定义边界)让SDN更安全,你的对面可不能是一条狗!
    从BeyondCorp说起
    [Docker] Docker整体架构图
    当博弈论遇上机器学习:一文读懂相关理论
    用Rust重写Linux内核模块体验
  • 原文地址:https://www.cnblogs.com/sea520/p/12680089.html
Copyright © 2011-2022 走看看