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 ...
随机推荐
- Jmeter JDBC的使用
1.当我们在对接口进行断言或进行多个接口串联时,常常会需要从DB查询数据来做辅助,连接JDBC需要有支持DB的jar包:官网下载地址:https://dev.mysql.com/downloads/c ...
- 原生js实现倒计时
html代码: <div class="box">距离下班还有:<span>01:01:30</span></div> css代码: ...
- MySql 定时完成备份
<?php /*定时备份数据库文件*/ //设置时区 date_default_timezone_set('PRC'); //创建目录 $dirname = 'e:/mysql_dump/'.d ...
- mysql timestamp的默认值
当default 0,default '0000-00-00 00:00:00'都失效的时候,请尝试下 ALTER table `coupon_gift` add column `time_end` ...
- homestead 暴露接口到外网
laravel 官方推荐的运行环境是homestead,但homestead是个虚拟机,你自己访问没问题,给别人联调怎么办? 一个大型项目肯定不止一个人开发,这个时候就需要将你虚拟机上的接口暴露给外网 ...
- python-day41--约束条件
一 .介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KE ...
- SQL Server 创建定时任务JOB
1. SQL Server 代理 → 作业(右键)→新建作业 2.在[常规]中输入 “名称” 并确认已勾选 “已启动”. 3.在[步骤]中 "新建步骤": 填写 “步骤名称 ...
- 根据Request获取真实客户端IP
转载:http://www.cnblogs.com/icerainsoft/p/3584532.html 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这 ...
- 纯css和js版下拉菜单
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- webbrowser 静音(刷新、点击网页的声音)(包括flash静音)
public enum INTERNETFEATURELIST { FEATURE_OBJECT_CACHING = 0, FEATURE_ZONE_ELEVATION = 1, FEATURE_MI ...