首页 运维 网络学院 查看内容

linux 的proc文件系统

2014-11-11 11:11 662 0

摘要: linux中的/proc文件系统是一个虚拟的文件系统,由内核在运行时动态生成。它提供了内核运行时的配置和状态信息。用户可以通过这些文件来获取、或修改内核的信息。关于proc,可以通过 man proc...
关键词: nbsp proc 系统 大小 内存 文件 内核 当前 时间 信息

linux中的/proc文件系统是一个虚拟的文件系统,由内核在运行时动态生成。它提供了内核运行时的配置和状态信息。用户可以通过这些文件来获取、或修改内核的信息。关于proc,可以通过 man proc 获取详细的说明。运行 mount 命令,可以看到 proc 文件系统的挂载信息。mount -t proc proc /proc /proc 目录下的文件/proc/cpuinifo       CPU的信息(型号、家族、缓存大小等)/proc/meminfo    物理内存、交换空间/proc/mounts      已加载的文件系统的列表/proc/devices  可用设备的列表/proc/filesystems   被支持的文件系统/proc/modules   已加载的模块/proc/virsion   内核版本/proc/cmdline   系统启动时输入的内核命令行参数/proc/XXX    XXX是指以数字编号的目录,有不少这样的目录,每一个目录表示一个进程(即线程组)。/proc/swaps   要获知swap空间的使用情况/proc/uptime   获取系统的正常运行时间/proc/fs/nfsd/exports  列出由NFS共享的文件系统/proc/kmsg  该文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用/proc/self -- 到当前进程/proc目录的符号链接,通过这个目录可以获取当前运行进程的信息。/proc/pci -- 挂接在PCI总线上的设备/proc/tty/driver/serial --串口配置、统计信息/proc/version -- 系统版本信息/proc/sys/kernel/ostype/proc/sys/kernel/osrelease/proc/sys/kernel/version/proc/sys/kernel/hostname -- 主机名/proc/sys/kernel/domainname -- 域名/proc/partitions -- 硬盘设备分区信息/proc/sys/dev/cdrom/info -- CDROM信息/proc/locks -- 当前系统中所有的文件锁/proc/loadavg -- 系统负荷信息/proc/uptime -- 系统启动后的运行时间----------------------------------------------------------------------------------------------------------------------------------------------------------查看系统内存信息的命令:   cat /proc/meminfoMemTotal:     3266180 kBMemFree:        17456kBBuffers:       111328kBCached:       2664024kBSwapCached:         0kBActive:        467236kBInactive:     2644928 kBHighTotal:         0kBHighFree:          0kBLowTotal:     3266180 kBLowFree:        17456kBSwapTotal:    2048276kBSwapFree:     1968116 kBDirty:            8kBWriteback:         0kBMapped:        345360kBSlab:         112344kBCommitted_AS:   535292kBPageTables:      2340 kBVmallocTotal: 536870911 kBVmallocUsed:    272696kBVmallocChunk: 536598175 kBHugePages_Total:    0HugePages_Free:     0Hugepagesize:    2048kB解析:MemTotal: 所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)MemFree: LowFree与HighFree的总和,被系统留着未使用的内存Buffers: 用来给文件做缓冲大小Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache ).SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小           已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用.Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径.HighTotal:HighFree: 该区域不是直接映射到内核空间。内核必须使用不同的手法使用该段内存。LowTotal:LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。Among many         other things, it is where everything from the Slab is         allocated.  Bad things happen when you're out of lowmem.SwapTotal: 交换空间的总大小SwapFree: 未被使用交换空间的大小Dirty: 等待被写回到磁盘的内存大小。Writeback: 正在被写回到磁盘的内存大小。AnonPages:未映射页的内存大小Mapped: 设备和文件等映射的大小。Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。SReclaimable:可收回Slab的大小SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)PageTables:管理内存分页页面的索引表的大小。NFS_Unstable:不稳定页表的大小VmallocTotal: 可以vmalloc虚拟内存大小VmallocUsed: 已经被使用的虚拟内存大小。VmallocChunk: largest contigious block of vmalloc area which is free------------------------------------------------------------------------------------------------------/proc/stat 文件的字段解析: user    systemnice    idle      iowait  irq    softirqcpu  17906755 86377 53312329 1322524322 29311124 101704 1096939cpu0 4665564  22883  13417357330376020  7206071 99986  297154cpu1 4488897  20352  13351971330749128  7202582 0     271926cpu2 4434851  22675  13302518330622140  7455115 1718   245786cpu3 4317443  20467  13240483330777034  7447356 0     282073输出解释CPU 以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思(以第一行为例)为:参数 解释user (432661) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒nice (13295) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)system (86656) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)iowait (171474) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,irq (233) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)softirq (5346) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)CPU时间=user+system+nice+idle+iowait+irq+softirq“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。“btime”给出了从系统启动到现在为止的时间,单位为秒。“processes (total_forks) 自系统启动以来所创建的任务的个数目。“procs_running”:当前运行队列的任务的数目。“procs_blocked”:当前被阻塞的任务的数目。那么CPU利用率可以使用以下两个方法。先取两个采样点,然后计算其差值:cpu usage=(idle2-idle1)/(cpu2-cpu1)*100cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100以下用分别用bash和perl做的一个cpu利用率的计算:total_0USER[0]+NICE[0]+SYSTEM[0]+IDLE[0]+IOWAIT[0]+IRQ[0]+SOFTIRQ[0]total_1=USER[1]+NICE[1]+SYSTEM[1]+IDLE[1]+IOWAIT[1]+IRQ[1]+SOFTIRQ[1]cpu usage=(IDLE[0]-IDLE[1]) / (total_0-total_1) * 100
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部