Linux调优之分析 /proc

先来了解下什么是/proc

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、 改变内核设置的机制。

/proc 是一个虚拟的文件系统:

/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。如果你察看文件 /proc/mounts (和 mount 命令一样列出所有已经加载的文件系统),你会看到其中 一行是这样的:

[root@localhost ~]# grep proc /proc/mounts

proc /procproc rw,relatime 0 0

/proc 是由内核控制的,所以没有所谓挂载proc的设备,/proc主要是存放内核控制的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。对 /proc 进行 一次 ‘ls -l’ 可以看到大部分文件都是 0 字节大的;不过察看这些文件的时候,确 实可以看到一些信息。这怎么可能?这是因为 /proc 文件系统和其他常规的文件系 统一样把自己注册到虚拟文件系统层 (VFS) 了。然而,直到当 VFS 调用它,请求 文件、目录的 i-node 的时候,/proc 文件系统才根据内核中的信息建立相应的文件和目录。

查看/proc 文件系统, 我们可以通过如:“cat”、“less”、“more”等命令来查看,当然了可以配合一些管道命令有如“grep”、“awk”、“sed”等来选取数据

当编辑程序试图打开一个虚拟文件时,这个文件就通过内核 中的信息被凭空地 (on the fly) 创建了。这是一些我从我的系统中得到的一些有趣 结果:

cpu信息文件 “/proc/cpuinfo”

执行cat查看:

[root@localhost proc]# cat /proc/cpuinfoprocessor: 0vendor_id: GenuineIntelcpu family: 6model: 58model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzstepping: 9cpu MHz: 2195.013cache size: 6144 KBphysical id: 0siblings: 3core id: 0cpu cores: 3apicid: 0initial apicid: 0fpu: yesfpu_exception: yescpuid level: 13wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dtsbogomips: 4390.02clflush size: 64cache_alignment: 64address sizes: 40 bits physical, 48 bits virtualpower management:processor: 1vendor_id: GenuineIntelcpu family: 6model: 58model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzstepping: 9cpu MHz: 2195.013cache size: 6144 KBphysical id: 0siblings: 3core id: 1cpu cores: 3apicid: 1initial apicid: 1fpu: yesfpu_exception: yescpuid level: 13wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dtsbogomips: 4390.02clflush size: 64cache_alignment: 64address sizes: 40 bits physical, 48 bits virtualpower management:processor: 2vendor_id: GenuineIntelcpu family: 6model: 58model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzstepping: 9cpu MHz: 2195.013cache size: 6144 KBphysical id: 0siblings: 3core id: 2cpu cores: 3apicid: 2initial apicid: 2fpu: yesfpu_exception: yescpuid level: 13wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dtsbogomips: 4390.02clflush size: 64cache_alignment: 64address sizes: 40 bits physical, 48 bits virtualpower management:processor: 3vendor_id: GenuineIntelcpu family: 6model: 58model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzstepping: 9cpu MHz: 2195.013cache size: 6144 KBphysical id: 1siblings: 3core id: 0cpu cores: 3apicid: 4initial apicid: 4fpu: yesfpu_exception: yescpuid level: 13wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dtsbogomips: 4390.02clflush size: 64cache_alignment: 64address sizes: 40 bits physical, 48 bits virtualpower management:processor: 4vendor_id: GenuineIntelcpu family: 6model: 58model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzstepping: 9cpu MHz: 2195.013cache size: 6144 KBphysical id: 1siblings: 3core id: 1cpu cores: 3apicid: 5initial apicid: 5fpu: yesfpu_exception: yescpuid level: 13wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dtsbogomips: 4390.02clflush size: 64cache_alignment: 64address sizes: 40 bits physical, 48 bits virtualpower management:processor: 5vendor_id: GenuineIntelcpu family: 6model: 58model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHzstepping: 9cpu MHz: 2195.013cache size: 6144 KBphysical id: 1siblings: 3core id: 2cpu cores: 3apicid: 6initial apicid: 6fpu: yesfpu_exception: yescpuid level: 13wp: yesflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dtsbogomips: 4390.02clflush size: 64cache_alignment: 64address sizes: 40 bits physical, 48 bits virtualpower management:

上述大部分的信息十分清楚地给出了这个系 统的有用的硬件信息。有些 /proc 的文件是经过编码的,,不同的工具可以被用来解释 这些编码过的信息并输出成可读的形式。这样的工具包括:’top’, ‘ps’, ‘apm’ 等。

更多详情见请继续阅读下一页的精彩内容:

相关阅读:

认识proc虚拟文件系统

Linux /proc 的意义

Linux下proc里关于磁盘性能的参数

Linux下用/proc/stat文件来计算cpu的利用率(附源码)

Linux /proc第一篇—->/proc/pid记录了什么

Linux proc 的文件系统的源码分析

Linux下查看CPU信息[/proc/cpuinfo]

Linux调试中使用的proc和sys中的接口

今日的执着,会造成明日的后悔。

Linux调优之分析 /proc

相关文章:

你感兴趣的文章:

标签云: