proc文件系统漫谈
1. /proc/buddyinfo:
/proc/buddyinfo是linuxbuddy系统管理物理内存的debug信息。
在linux中使用buddy算法解决物理内存的外碎片问题,其把所有空闲的内存,以2的幂次方的形式,分成11个块链表,
分别对应为1、2、4、8、16、32、64、128、256、512、1024个页块。
而Linux支持NUMA技术,对于NUMA设备,NUMA系统的结点通常是由一组CPU和本地内存组成,每一个节点都有相应的本
地内存,因此buddyinfo 中的Node0表示节点ID;而每一个节点下的内存设备,又可以划分为多个内存区域(zone),
因此下面的显示中,对于Node0的内存,又划分类DMA、Normal、HighMem区域。而后面则是表示空闲的区域。一般预留DMA内存从内存的首地址开始预留。
此处以Normal区域进行分析,第二列值为100,表示当前系统中normal区域,可用的连续两页的内存大小为100*2*PAGE_SIZE;
第三列值为52,表示当前系统中normal区域,可用的连续四页的内存大小为52*2^2*PAGE_SIZE
cat /proc/buddyinfo
Node 0, zone DMA 23 15 4 5 2 3 3 2 3 1 0
Node 0, zone Normal 149 100 52 33 23 5 32 8 12 2 59
Node 0, zone HighMem 11 21 23 49 29 15 8 16 12 2 142
2. /proc/meminfo:
cat /proc/meminfo这个命令,这个命令其实跟“free -m”这个命令差不多的,只是得出来的信息更详细
root@vpsroll:~# cat /proc/meminfo
MemTotal: 262144 kB
MemFree: 237904 kB
Cached: 10540 kB
Active: 10220 kB
Inactive: 7004 kB
Active(anon): 6608 kB
Inactive(anon): 76 kB
Active(file): 3612 kB
Inactive(file): 6928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 524288 kB
SwapFree: 524288 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 6684 kB
Shmem: 2632 kB
Slab: 6972 kB
SReclaimable: 4288 kB
SUnreclaim: 2684 kB
MemTotal: 所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)
MemFree: LowFree与HighFree的总和,被系统留着未使用的内存
Buffers: 用来给文件做缓冲大小
Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache ).
SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小,已经被交换出来的内存,但仍然被存放在swapfile中。
用来在需要的时候很快的被替换而不需要再次打开I/O端口。
Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用.
Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径.
HighTotal:
HighFree: 该区域不是直接映射到内核空间。内核必须使用不同的手法使用该段内存。
LowTotal:
LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。在许多其他事情中,
这是Slab分配的所有内容。 糟糕的事情发生在你超出低端内存的时候。
SwapTotal: 交换空间的总大小
SwapFree: 未被使用交换空间的大小
Dirty: 等待被写回到磁盘的内存大小。
Writeback: 正在被写回到磁盘的内存大小。
AnonPages:未映射页的内存大小
Mapped: 设备和文件等映射的大小。
Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。
SReclaimable:可收回Slab的大小
SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
PageTables:管理内存分页页面的索引表的大小。
NFS_Unstable:不稳定页表的大小
VmallocTotal: 可以vmalloc虚拟内存大小
VmallocUsed: 已经被使用的虚拟内存大小。
VmallocChunk: vmalloc区域的可用的最大的连续块
https://www.cnblogs.com/tcicy/p/8299573.html
https://www.sogou.com/link?url=DOb0bgH2eKg7Sf-koBXrEidQRoztLvNXCquHaNrIZCGK6x5wQqf_qNC6QghyI0Ya0ztd7q5nl6o.
3. /proc/cpuinfo
CPU MHz - 显示处理器在千兆位精确的兆赫速度。
cache size - 显示处理器可用的2级缓存。
siblings - 显示使用超线程的体系结构在同一物理CPU上的同级CPU数量。
flags - 这是个总称,定义处理器的许多不同特性,例如浮点单元(fpu)的存在和处理MMX指令的能力。
4. /proc/crypto
该文件列出了Linux内核使用的所有安装的加密密码,包括每个密码的附加详细信息。
5. /proc/devices
该文件显示当前配置的各种字符和块设备(不包括其模块未加载的设备)。 以下是该文件的输出示例:
/proc/devices的输出包括设备的名称和主设备号,分为两大部分:字符设备和块设备。
字符设备类似于块设备,除了两个基本的区别:
1.字符设备不需要缓冲。 块设备具有可用的缓冲区,允许它们在寻址请求前对其进行排序。 这对于设计用于存储信息的设备(例如硬盘驱动器)很重要,因为在将信息写入设备之前对信息进行排序的能力使其能够以更高效的顺序进行排列。
2.字符设备发送的数据没有预先配置的大小。 块设备可以按每个设备配置的大小发送和接收信息。
$ cat /proc/devices
Character devices:
mem
/dev/vc/
tty
ttyS
/dev/tty
/dev/console
/dev/ptmx
ttyprintk
lp
vcs
misc
input
sound/midi
... Block devices:
ramdisk
blkext
loop
sd
md
sr
sd
...
6. /proc/fb
该文件包含帧缓冲设备列表,帧缓冲设备编号和控制它的驱动程序:
$ cat /proc/fb
0 svgadrmfb
7. /proc/filesystems
该文件显示内核当前支持的文件系统类型的列表
第一列表示此文件系统是否被mount在块设备上。那些以nodev开头的程序没有被mount到设备上。
第二列列出了支持的文件系统的名称。
当没有指定参数时,mount命令循环遍历这里列出的文件系统!!
$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
nodev cgroup
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev devpts
ext3
ext2
ext4
squashfs
nodev hugetlbfs
vfat
nodev ecryptfs
fuseblk
nodev fuse
nodev fusectl
nodev pstore
nodev mqueue
8. /proc/interrupts
这个文件记录着系统中每一个中断号中断的次数。
第一列是指IRQ编号。 系统中的每个CPU都有自己的列和每个IRQ自己的中断数量。
第二列报告中断的类型,
最后一列包含位于该IRQ的设备的名称。
每个CPU都有一列显示==>可以从这看出SOC有几个核
这个文件中看到的每种类型的中断都是特定于体系结构的,意味着会有些不同。对于x86机器:
XT-PIC - 这是旧的AT电脑中断。
IO-APIC-edge - 该中断上的电压信号从低电平转换为高电平,创建一个边沿,中断发生,并且仅发送一次信号。
这种中断以及IO-APIC级中断仅在具有586系列及更高处理器的系统中才能看到。
IO-APIC-level - 当电压信号为高电平时产生中断,直到信号再次变为低电平。
9. /proc/iomem
该文件显示每个物理设备的系统内存当前映射:
第一列显示每种不同类型内存使用的内存寄存器。
第二列列出了位于这些寄存器中的内存种类,并显示内核在系统RAM中使用哪些内存寄存器,eg.如果网络接口卡具有多个以太网端口,
则为每个端口分配内存寄存器。
10. /proc/ioports
显示用于与设备进行输入或输出通信的当前注册的端口区域的列表
sfl@ubuntu:~/work$ cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : PNP0001:00
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0061-0061 : PNP0800:00
0064-0064 : keyboard
0070-0071 : rtc0
...
11. /proc/kcore
该文件表示系统的物理内存并以核心文件格式存储。 与大多数/proc/文件不同,kcore显示大小。 该值以字节为单位给出,
等于所使用的物理内存(RAM)的大小加上4 KB。这个文件的内容被设计为由调试器(如gdb)检查,是二进制文件,不是ASCII码文件。
12. /proc/kmsg
该文件用于保存内核生成的消息。这些消息随后被其他程序拾取,如/sbin/klogd或/bin/dmesg。
13. /proc/locks
该文件显示当前由内核锁定的文件。此文件的内容包含内部内核调试数据,并且可能会有很大差异,具体取决于系统的使用情况。
每个锁都有自己的一行,以唯一的编号开头。 第二列是指所使用的锁的类别,FLOCK表示来自flock系统调用的旧式UNIX文件锁,以及
表示来自lockf系统调用的较新POSIX锁的POSIX。
第三列可以有两个值:ADVISORY或MANDATORY。 ADVISORY意味着锁不会阻止其他人访问数据; 它只会阻止其他尝试来锁定它。
MANDATORY意味着在锁定期间不允许其他数据访问。
第四列显示锁是否允许持有者读取或写入文件。
第五列显示持有锁的进程的ID。
第六列显示被锁定文件的ID,格式为MAJOR-DEVICE:MINOR-DEVICE:INODE-NUMBER。
第七和第八列显示文件的锁定区域的开始和结束。
# cat /proc/locks
: POSIX ADVISORY READ ::
: POSIX ADVISORY READ ::
: POSIX ADVISORY WRITE :: EOF
: POSIX ADVISORY READ ::
: POSIX ADVISORY READ ::
: POSIX ADVISORY READ ::
: POSIX ADVISORY READ ::
: FLOCK ADVISORY WRITE :: EOF
: FLOCK ADVISORY WRITE :: EOF
: POSIX ADVISORY READ ::
: POSIX ADVISORY READ ::
: POSIX ADVISORY WRITE ::
: FLOCK ADVISORY WRITE :: EOF
proc文件系统漫谈的更多相关文章
- linux 使用/proc文件系统 实现用户空间与内核模块之间通信
项目中可能会用到用户态和内核模块之间进行通信的功能.想到linux系统本身很多通信都是通过/proc文件系统来的,比如修改网络中连接跟踪表连接数限制/proc/sys/net/netfilter/nf ...
- proc文件系统
在shell终端里不带任何参数,直接运行mount命令可以显示正在挂载的文件系统.其中有这么一行 none on /proc type proc (rw) 这就是/proc文件系统.第一个域显示non ...
- proc文件系统在内核中的表现
当Linux内核启动起来之后,我们可以通过proc虚拟文件系统来查看内的中的一些动态信息. 例如:可以 cat /proc/misc 来查看系统中装载的所有misc类设备 cat /proc/d ...
- 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解
http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...
- <解说linux下proc文件系统>
proc文件系统的作用是访问系统内核信息 proc不是一个真实的文件系统,它不占系统的外存空间,只是以文件的形式为用户访问linux内核数据提供接口,因为系统内核总是动态的变化,所以我们所捕捉到的也只 ...
- (转)使用 /proc 文件系统来访问 Linux 内核的内容
转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...
- linux中proc文件系统 -- ldd3读书笔记
1./proc 文件系统概述 /proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统./proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生 ...
- 在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world
一.题目 编写一个内核模块,在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world.内核版本要求2.6.18 二.实验环境 物理主机:w ...
- linux kernel (proc文件系统)参数
http://blog.csdn.net/guowake/article/details/3279796 Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 二./pr ...
随机推荐
- sgu 108 Self-numbers 2
题意:这样的数有几个? 模仿筛法就能解出,但是内存不够.这就需要重复利用数组,用100大小的数组,所有的数对100取模.对于一个数,比如71,就在arr[78]=71记录下来.到78时,检查78-71 ...
- Deep Learning of Graph Matching 阅读笔记
Deep Learning of Graph Matching 阅读笔记 CVPR2018的一篇文章,主要提出了一种利用深度神经网络实现端到端图匹配(Graph Matching)的方法. 该篇文章理 ...
- ccf第二题总结
1.游戏 问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加, ...
- nyoj38
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...
- 二维数组malloc
//WC[K][N] double **WC = (double**)malloc(sizeof(double*)*K); ; i < K; i++) { WC[i] = (double*)ma ...
- json格式化
jar包:gson-xxx.jar import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.goog ...
- C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...
- 【转载】maven用处
http://bbs.csdn.net/topics/80014314 当您的项目逐渐变得庞大和复杂时,最好使用一种构建工具来自动构建您的项目.例如,一个典型的java项目,每次构建时都要经历编译ja ...
- 福大软工 1816:项目UML设计(团队作业三)
项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...
- Swift网络封装库Moya中文手册之Endpoints
Endpoints Endpoint是一种半私有的数据结构,Moya用来解释网络请求的根本构成.一个endpoint储存了以下数据: The URL. The HTTP method (GET,POS ...