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文件系统漫谈的更多相关文章

  1. linux 使用/proc文件系统 实现用户空间与内核模块之间通信

    项目中可能会用到用户态和内核模块之间进行通信的功能.想到linux系统本身很多通信都是通过/proc文件系统来的,比如修改网络中连接跟踪表连接数限制/proc/sys/net/netfilter/nf ...

  2. proc文件系统

    在shell终端里不带任何参数,直接运行mount命令可以显示正在挂载的文件系统.其中有这么一行 none on /proc type proc (rw) 这就是/proc文件系统.第一个域显示non ...

  3. proc文件系统在内核中的表现

    当Linux内核启动起来之后,我们可以通过proc虚拟文件系统来查看内的中的一些动态信息. 例如:可以 cat  /proc/misc  来查看系统中装载的所有misc类设备 cat  /proc/d ...

  4. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  5. <解说linux下proc文件系统>

    proc文件系统的作用是访问系统内核信息 proc不是一个真实的文件系统,它不占系统的外存空间,只是以文件的形式为用户访问linux内核数据提供接口,因为系统内核总是动态的变化,所以我们所捕捉到的也只 ...

  6. (转)使用 /proc 文件系统来访问 Linux 内核的内容

    转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...

  7. linux中proc文件系统 -- ldd3读书笔记

    1./proc 文件系统概述 /proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统./proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生 ...

  8. 在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world

    一.题目 编写一个内核模块,在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world.内核版本要求2.6.18 二.实验环境 物理主机:w ...

  9. linux kernel (proc文件系统)参数

    http://blog.csdn.net/guowake/article/details/3279796 Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 二./pr ...

随机推荐

  1. English trip -- 国际音标表

    26个字母音标表 A a [ei] B b [bi:] C c [si:] D d [di:] E e [i:] F f [ef] G g [dʒi:] H h [eit∫] I i [ai] J j ...

  2. 在 Confluence 6 中连接一个 LDAP 目录

    希望将 Confluence 连接到一个 LDAP 目录: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 在左侧的面板中单击 用户目录(User Di ...

  3. nyoj-1367-河南省第十一届省赛-E物流配送-最小费用流

    1367-物流配送 内存限制:128MB 时间限制:8000ms 特判: No通过数:1 提交数:1 难度:4 题目描述: 物流配送是物流活动中一种非单一的业务形式,它与物品流动.资金流动紧密结合.备 ...

  4. 使用yum安装php72

    1.执行yum search php72w查看自己的yum源有没有php72 如果自己有安装其它php版本先执行yum -y remove php* 2.没有php72执行以下命令扩展yum库,以下命 ...

  5. 阿里云ECS服务器自定义端口无法访问问题记录

    记住阿里云ECS服务器有个安全组!!! 购买了阿里云服务器的时候,购买界面那里是可以勾选默认的几个端口是否开启的,服务器默认勾了22端口,使用户能登录服务器. 当我们在服务器里面配置nginx,开启自 ...

  6. 应用多种变形CSS3

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  7. Word发布到cnblogs文章

        1◆ 打开word 2◆ 注册用户   3◆ 操作 success

  8. 013PHP文件处理——filemtime filectime fileatime date_default_timezone_set touch

    <?php /** * filemtime filectime fileatime date_default_timezone_set touch */ /*filemtime:获取文件的修改时 ...

  9. 非常简单的vue里面引入jquery

    如何在vue里面引入jq了,只需四部就完成 第一步 cnpm install jquery 第二步 打开build文件夹 , 打开webpack.base.conf.js文件找到下面module.ex ...

  10. js相关小技巧

    1.清空type=file的input文件上传控件的内容,相当于重置.txtFile是该input的id $("#txtFile").val(""); $(&q ...