Linux /proc目录下meminfo与cpuinfo文件分析

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

meminfo文件包含如下内容:

MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)

MemFree: LowFree与HighFree的总和,被系统留着未使用的内存

Buffers: 用来给文件做缓冲大小

Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache ).

SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。

Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用.

Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径.

HighTotal:

HighFree: 该区域不是直接映射到内核空间。内核必须使用不同的手法使用该段内存。

LowTotal:

LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。

SwapTotal: 交换空间的总大小

SwapFree: 未被使用交换空间的大小

Dirty: 等待被写回到磁盘的内存大小。

Writeback: 正在被写回到磁盘的内存大小。

AnonPages:未映射页的内存大小

Mapped: 设备和文件等映射的大小。

Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。

SReclaimable:可收回Slab的大小

SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)

PageTables:管理内存分页页面的索引表的大小。

NFS_Unstable:不稳定页表的大小

Bounce:

Committed_AS:

VmallocTotal: 可以vmalloc虚拟内存大小

VmallocUsed: 已经被使用的虚拟内存大小。

VmallocChunk: largest contigious block of vmalloc area which is free

cpuinfo文件包含如下内容:

processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核vendor_id :CPU制造商 cpu family :CPU产品系列代号model   :CPU属于其系列中的哪一代的代号model name:CPU属于的名字及其编号、标称主频stepping  :CPU属于制作更新版本cpu MHz  :CPU的实际使用主频cache size :CPU二级缓存大小physical id :单个CPU的标号siblings :单个CPU逻辑物理核数core id :当前物理核在其所处CPU中的编号,这个编号不一定连续cpu cores :该逻辑核所处CPU的物理核数apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续fpu :是否具有浮点运算单元(Floating Point Unit)fpu_exception :是否支持浮点计算异常cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)flags :当前CPU支持的功能bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)clflush size :每次刷新缓存的大小单位cache_alignment :缓存地址对齐单位address sizes :可访问地址空间位数

在编程语言里可以直接调用这些信息,如在Luci中,调用如下:

function sysinfo()local cpuinfo = fs.readfile("/proc/cpuinfo")local meminfo = fs.readfile("/proc/meminfo")local memtotal = tonumber(meminfo:match("MemTotal:%s*(%d+)"))local memcached = tonumber(meminfo:match("\nCached:%s*(%d+)"))local memfree = tonumber(meminfo:match("MemFree:%s*(%d+)"))local membuffers = tonumber(meminfo:match("Buffers:%s*(%d+)"))local bogomips = tonumber(cpuinfo:match("[Bb]ogo[Mm][Ii][Pp][Ss].-: ([^\n]+)")) or 0

今天又是美好的一天,我要展示出我优秀的一面。不必一味讨好别人

Linux /proc目录下meminfo与cpuinfo文件分析

相关文章:

你感兴趣的文章:

标签云: