https://www.jianshu.com/p/2610241770be
/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是 动态从系统内核读出所需信息并提交的。
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系 统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变 内核的运行状态。
基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽 然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这 跟它们随时会被刷新(存储于RAM中)有关。
为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中, 如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为 正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。
大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现
文件大小是0,如下所示;
[root@localhost ~]# ls -lh / |grep proc
dr-xr-xr-x. 653 root root 0 Aug 26 16:27 proc
用于诊断内存碎片问题的相关信息文件;
# cat /proc/buddyinfo
Node 0, zone DMA 0 0 1 1 1 0 0 0 1 1 3
Node 0, zone DMA32 372 207 80 111 39 13 2 2 0 3 591
Node 0, zone Normal 227 39 33 88 446 289 126 59 18 34 10805
Node 1, zone Normal 101 88 1114 1873 1590 1031 820 652 691 694 10362
这个文件给出了内核启动的命令行。它和用于进程的cmdline项非常相似,如下所示:
[root@localhost ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-862.el7.x86_64 root=/dev/mapper/rhel00-root ro crashkernel=auto noapic rd.lvm.lv=rhel00/root biosdevname=1 rd.lvm.lv=rhel00/swap rhgb quiet
前言
在linux系统中,提供了/proc目录下文件,显示系统的软硬件信息。如果想了解系统中CPU的提供商和相关配置信息,则可以查/proc/cpuinfo。但是此文件输出项较多,不易理解。例如我们想获取,有多少颗物理CPU,每个物理cpu核心数,以及超线程是否开启等信息,下面我们就看来一步一步的去探索。
概念
①物理CPU数(physical id):主板上实际插入的cpu数量,可以数不重复的 physical id 有几个
②CPU核心数(cpu cores):单块CPU上面能处理数据的芯片组的数量,如双核、四核等
③逻辑CPU数:一般情况下,
逻辑CPU=物理CPU个数×每颗核数 #不支持超线程技术或没有开启次技术
逻辑CPU=物理CPU个数×每颗核数 *2 #表示服务器的CPU支持超线程技术(简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能)
内容的项目解读
下面对上图的输出内容进行相应解释
processor :系统中逻辑处理核心数的编号,从0开始排序。
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU属于制作更新版本
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个物理CPU的标号
siblings :单个物理CPU的逻辑CPU数。siblings=cpu cores [*2]。
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续。
cpu cores :该逻辑核所处CPU的物理核数。比如此处cpu cores 是4个,那么对应core id 可能是 1、3、4、5。
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 :可访问地址空间位数
power management :对能源管理的支持
快速查询想要获取的信息
查询系统有几颗物理CPU
[root@localhost ~]# cat /proc/cpuinfo |grep "physical id"|sort|uniq
physical id : 0
physical id : 1
查询系统每颗物理CPU的核心数量
[root@localhost ~]# cat /proc/cpuinfo |grep "cpu cores"|uniq
cpu cores : 16
查询系统的每颗CPU是否启用了超线程技术,如果启用了此技术,每个物理核心又可分为两个逻辑处理器。
[root@localhost ~]# cat /proc/cpuinfo |grep -e "cpu cores" -e "siblings"|sort|uniq
cpu cores : 16
siblings : 32
查询系统具有多少个逻辑CPU
[root@localhost ~]# cat /proc/cpuinfo|grep "processor"|wc -l
64
Many of the virtual files in the /proc directory contain information about hardware and configurations. Here are some of them
This file displays the various character and block devices currently configured (not including devices whose modules are not loaded). Below is a sample output from this file:
# cat /proc/dma
4: cascade
This directory contains information for specific drivers in use by the kernel.
A common file found here is rtc which provides output from the driver for the system's Real Time Clock (RTC), the device that keeps the time while the system is switched off. Sample output from /proc/driver/rtc looks like the following:
# cat /proc/driver/rtc
rtc_time : 12:07:17
rtc_date : 2022-09-05
alrm_time : 07:31:36
alrm_date : 2022-08-27
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1024
max user IRQ frequency : 64
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : yes
BCD : yes
DST_enable : no
periodic_freq : 1024
batt_status : okay
For more information about the RTC, see the following installed documentation:
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/rtc.txt
# find / -name rtc
/dev/rtc
/sys/devices/pnp0/00:00/rtc
/sys/class/rtc
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/drivers/rtc
/usr/src/kernels/3.10.0-862.el7.x86_64/drivers/rtc
/usr/src/kernels/3.10.0-862.el7.x86_64/include/config/rtc
/usr/src/kernels/3.10.0-862.el7.x86_64/include/linux/rtc
This file displays a list of the file system types currently supported by the kernel. Sample output from a generic /proc/filesystems file looks similar to the following:
# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev securityfs
nodev sockfs
nodev dax
nodev pipefs
nodev anon_inodefs
nodev configfs
nodev devpts
nodev hugetlbfs
nodev autofs
nodev pstore
nodev efivarfs
nodev mqueue
nodev selinuxfs
nodev resctrl
xfs
nodev rpc_pipefs
vfat
nodev binfmt_misc
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel00-root xfs 50G 16G 35G 32% /
devtmpfs devtmpfs 47G 0 47G 0% /dev
tmpfs tmpfs 47G 4.0K 47G 1% /dev/shm
tmpfs tmpfs 47G 20M 47G 1% /run
tmpfs tmpfs 47G 0 47G 0% /sys/fs/cgroup
/dev/sdd2 xfs 1014M 162M 853M 16% /boot
/dev/sdd1 vfat 200M 9.8M 191M 5% /boot/efi
/dev/mapper/rhel00-home xfs 504G 55M 504G 1% /home
tmpfs tmpfs 9.4G 12K 9.4G 1% /run/user/42
tmpfs tmpfs 9.4G 0 9.4G 0% /run/user/0
The first column signifies whether the file system is mounted on a block device. Those beginning with nodev are not mounted on a device. The second column lists the names of the file systems supported.
The mount command cycles through the file systems listed here when one is not specified as an argument.
This directory shows which file systems are exported. If running an NFS server, typing cat /proc/fs/nfsd/exports displays the file systems being shared and the permissions granted for those file systems. For more on file system sharing with NFS, see the Network File System (NFS) chapter of the Storage Administration Guide.
[root@localhost ~]# ls -l /proc/fs
total 0
dr-xr-xr-x. 2 root root 2 Sep 5 20:22 nfsd
dr-xr-xr-x. 2 root root 0 Sep 5 20:22 xfs
[root@localhost ~]# ls -l /proc/fs/xfs
total 0
lrwxrwxrwx. 1 root root 23 Sep 5 20:22 stat -> /sys/fs/xfs/stats/stats
-r--r--r--. 1 root root 0 Sep 5 20:22 xqm
-r--r--r--. 1 root root 0 Sep 5 20:22 xqmstat
[root@localhost ~]# ls -l /proc/fs/nfsd
total 0
This file shows you the current map of the system's memory for each physical device:
# cat /proc/iomem
00000000-00000fff : reserved
00001000-0009ffff : System RAM
000a0000-000fffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c4000-000c7fff : PCI Bus 0000:00
000f0000-000fffff : System ROM
00100000-5f23f017 : System RAM
2d000000-375fffff : Crash kernel
5f23f018-5f276c57 : System RAM
5f276c58-5f277017 : System RAM
5f277018-5f2aec57 : System RAM
5f2aec58-5f2af017 : System RAM
5f2af018-5f2e6c57 : System RAM
5f2e6c58-5f2e7017 : System RAM
5f2e7018-5f31ec57 : System RAM
5f31ec58-5f31f017 : System RAM
5f31f018-5f34ec57 : System RAM
5f34ec58-5f34f017 : System RAM
5f34f018-5f357057 : System RAM
5f357058-5f358017 : System RAM
5f358018-5f35f657 : System RAM
5f35f658-a5c03fff : System RAM
a5c04000-a61dffff : ACPI Tables
a61e0000-a6dd5fff : ACPI Non-volatile Storage
a6dd6000-a7e40fff : System RAM
a7e41000-aaf1dfff : reserved
a7f8f018-a7f8f018 : APEI ERST
a7f8f01c-a7f8f021 : APEI ERST
a7f8f028-a7f8f039 : APEI ERST
a7f8f040-a7f8f04c : APEI ERST
a7f8f050-a7f9104f : APEI ERST
aaf1e000-afbebfff : System RAM
afbec000-afc1dfff : reserved
afc1e000-afffffff : System RAM
b0000000-cfffffff : reserved
c0000000-cfffffff : PCI MMCONFIG 0000 [bus 00-ff]
d0000000-d1ffffff : PCI Bus 0000:00
d0000000-d1bfffff : PCI Bus 0000:01
d0000000-d1afffff : PCI Bus 0000:02
d0000000-d0ffffff : 0000:02:00.0
d0000000-d0ffffff : mgadrmfb_vram
d1000000-d17fffff : 0000:02:00.0
d1a00000-d1a0ffff : 0000:02:00.0
d1a10000-d1a13fff : 0000:02:00.0
d1a10000-d1a13fff : mgadrmfb_mmio
d1b00000-d1b00fff : 0000:01:00.0
d1c00000-d1c7ffff : 0000:00:17.0
d1c00000-d1c7ffff : ahci
d1c80000-d1cfffff : 0000:00:11.5
d1c80000-d1cfffff : ahci
d1d10000-d1d13fff : 0000:00:1f.2
d1d14000-d1d15fff : 0000:00:17.0
d1d14000-d1d15fff : ahci
d1d16000-d1d17fff : 0000:00:11.5
d1d16000-d1d17fff : ahci
d1d18000-d1d180ff : 0000:00:17.0
d1d18000-d1d180ff : ahci
d1d19000-d1d190ff : 0000:00:11.5
d1d19000-d1d190ff : ahci
d1d1a000-d1d1afff : 0000:00:05.4
d2000000-d2ffffff : PCI Bus 0000:05
d2d00000-d2efffff : PCI Bus 0000:06
d2d00000-d2dfffff : 0000:06:00.0
d2d00000-d2dfffff : mpt3sas
d2e00000-d2e3ffff : 0000:06:00.0
d2f00000-d2f00fff : 0000:05:05.4
d3000000-d33fffff : PCI Bus 0000:2e
d3300000-d3300fff : 0000:2e:05.4
d3400000-e3ffffff : PCI Bus 0000:57
e3b00000-e3efffff : PCI Bus 0000:58
e3b00000-e3bfffff : 0000:58:00.0
e3c00000-e3dfffff : PCI Bus 0000:59
e3c00000-e3dfffff : PCI Bus 0000:5a
e3c00000-e3c7ffff : 0000:5a:00.3
e3c80000-e3cfffff : 0000:5a:00.2
e3d00000-e3d7ffff : 0000:5a:00.1
e3d80000-e3dfffff : 0000:5a:00.0
e3e00000-e3e1ffff : 0000:58:00.0
e3f00000-e3f00fff : 0000:57:05.4
e4000000-e8ffffff : PCI Bus 0000:80
e8f00000-e8f00fff : 0000:80:05.4
e9000000-edffffff : PCI Bus 0000:85
edb00000-edbfffff : PCI Bus 0000:89
edc00000-edcfffff : PCI Bus 0000:88
edd00000-eddfffff : PCI Bus 0000:87
ede00000-edefffff : PCI Bus 0000:86
edf00000-edf00fff : 0000:85:05.4
ee000000-f2ffffff : PCI Bus 0000:ae
f2f00000-f2f00fff : 0000:ae:05.4
f3000000-f7ffffff : PCI Bus 0000:d7
f7f00000-f7f00fff : 0000:d7:05.4
fd000000-fe7fffff : reserved
fd000000-fdabffff : pnp 00:08
fdad0000-fdadffff : pnp 00:08
fdb00000-fdffffff : pnp 00:08
fdc6000c-fdc6000f : iTCO_wdt
fe000000-fe00ffff : pnp 00:08
fe010000-fe010fff : PCI Bus 0000:00
fe010000-fe010fff : 0000:00:1f.5
fe011000-fe01ffff : pnp 00:08
fe036000-fe03bfff : pnp 00:08
fe03d000-fe3fffff : pnp 00:08
fe410000-fe7fffff : pnp 00:08
fec00000-fecfffff : PNP0003:00
fed00000-fed003ff : HPET 0
fed00000-fed003ff : PNP0103:00
fed12000-fed1200f : pnp 00:01
fed12010-fed1201f : pnp 00:01
fed1b000-fed1bfff : pnp 00:01
fed20000-fed44fff : reserved
fed45000-fed8bfff : pnp 00:01
fee00000-feefffff : pnp 00:01
fee00000-fee00fff : Local APIC
ff000000-ffffffff : reserved
ff000000-ffffffff : pnp 00:01
100000000-183fffffff : System RAM
1493600000-1493d27306 : Kernel code
1493d27307-149434f8bf : Kernel data
1494522000-149482cfff : Kernel bss
20000000000-20fffffffff : PCI Bus 0000:00
20000000000-200000000ff : 0000:00:1f.4
20ffff00000-20ffff0ffff : 0000:00:14.0
20ffff00000-20ffff0ffff : xhci-hcd
20ffff10000-20ffff13fff : 0000:00:04.7
20ffff14000-20ffff17fff : 0000:00:04.6
20ffff18000-20ffff1bfff : 0000:00:04.5
20ffff1c000-20ffff1ffff : 0000:00:04.4
20ffff20000-20ffff23fff : 0000:00:04.3
20ffff24000-20ffff27fff : 0000:00:04.2
20ffff28000-20ffff2bfff : 0000:00:04.1
20ffff2c000-20ffff2ffff : 0000:00:04.0
20ffff30000-20ffff30fff : 0000:00:16.4
20ffff31000-20ffff31fff : 0000:00:16.1
20ffff32000-20ffff32fff : 0000:00:16.0
20ffff32000-20ffff32fff : mei_me
20ffff33000-20ffff33fff : 0000:00:14.2
21000000000-21fffffffff : PCI Bus 0000:05
21fffe00000-21fffffffff : PCI Bus 0000:06
21fffe00000-21fffefffff : 0000:06:00.0
21fffe00000-21fffefffff : mpt3sas
21ffff00000-21fffffffff : 0000:06:00.0
21ffff00000-21fffffffff : mpt3sas
22000000000-22fffffffff : PCI Bus 0000:2e
23000000000-23fffffffff : PCI Bus 0000:57
23ffb000000-23fff0fffff : PCI Bus 0000:58
23ffb000000-23fff0fffff : PCI Bus 0000:59
23ffb000000-23fff0fffff : PCI Bus 0000:5a
23ffb000000-23ffbffffff : 0000:5a:00.3
23ffb000000-23ffbffffff : i40e
23ffc000000-23ffcffffff : 0000:5a:00.2
23ffc000000-23ffcffffff : i40e
23ffd000000-23ffdffffff : 0000:5a:00.1
23ffd000000-23ffdffffff : i40e
23ffe000000-23ffeffffff : 0000:5a:00.0
23ffe000000-23ffeffffff : i40e
23fff000000-23fff007fff : 0000:5a:00.3
23fff000000-23fff007fff : i40e
23fff008000-23fff00ffff : 0000:5a:00.2
23fff008000-23fff00ffff : i40e
23fff010000-23fff017fff : 0000:5a:00.1
23fff010000-23fff017fff : i40e
23fff018000-23fff01ffff : 0000:5a:00.0
23fff018000-23fff01ffff : i40e
24000000000-24fffffffff : PCI Bus 0000:80
24ffff00000-24ffff03fff : 0000:80:04.7
24ffff04000-24ffff07fff : 0000:80:04.6
24ffff08000-24ffff0bfff : 0000:80:04.5
24ffff0c000-24ffff0ffff : 0000:80:04.4
24ffff10000-24ffff13fff : 0000:80:04.3
24ffff14000-24ffff17fff : 0000:80:04.2
24ffff18000-24ffff1bfff : 0000:80:04.1
24ffff1c000-24ffff1ffff : 0000:80:04.0
25000000000-25fffffffff : PCI Bus 0000:85
25fffc00000-25fffcfffff : PCI Bus 0000:89
25fffd00000-25fffdfffff : PCI Bus 0000:88
25fffe00000-25fffefffff : PCI Bus 0000:87
25ffff00000-25fffffffff : PCI Bus 0000:86
26000000000-26fffffffff : PCI Bus 0000:ae
27000000000-27fffffffff : PCI Bus 0000:d7
The output of /proc/ioports provides a list of currently registered port regions used for input or output communication with a device. This file can be quite long.
This file is used to hold messages generated by the kernel. These messages are then picked up by other programs, such as /sbin/klogd or /bin/dmesg.
This file provides a look at the load average in regard to both the CPU and IO over time, as well as additional data used by uptime and other commands. A sample /proc/loadavg file looks similar to the following:
# cat /proc/loadavg
0.00 0.01 0.05 1/934 408931
[root@localhost ~]# uptime
20:39:36 up 10 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05
The first three columns measure CPU and IO utilization of the last one, five, and 15 minute periods. The fourth column shows the number of currently running processes and the total number of processes. The last column displays the last process ID used.
In addition, load average also refers to the number of processes ready to run (i.e. in the run queue, waiting for a CPU share.
This file contains the current information for multiple-disk, RAID configurations. If the system does not contain such a configuration, then /proc/mdstat looks similar to the following:
Personalities : read_ahead not set unused devices: <none>
This file remains in the same state as seen above unless a software RAID or md device is present. In that case, view /proc/mdstat to find the current status of mdX RAID devices.
The /proc/mdstat file below shows a system with its md0 configured as a RAID 1 device, while it is currently re-syncing the disks:
Personalities : [linear] [raid1] read_ahead 1024 sectors
md0: active raid1 sda2[1] sdb2[0] 9940 blocks [2/2] [UU] resync=1% finish=12.3min algorithm 2 [3/3] [UUU]
unused devices: <none>
This is one of the more commonly used files in the /proc/ directory, as it reports a large amount of valuable information about the system's RAM usage.
The following sample /proc/meminfo virtual file is from a system with 2 GB of RAM and 1 GB of swap space:
While the file shows kilobytes (kB; 1 kB equals 1000 B), it is actually kibibytes (KiB; 1 KiB equals 1024 B). This imprecision in /proc/meminfo is known, but is not corrected due to legacy concerns - programs rely on /proc/meminfo to specify size with the "kB" string.
Much of the information in /proc/meminfo is used by the free, top, and ps commands. In fact, the output of the free command is similar in appearance to the contents and structure of /proc/meminfo. However, /proc/meminfo itself has more details:
MemTotal — Total amount of usable RAM, in kibibytes, which is physical RAM minus a number of reserved bits and the kernel binary code.
MemFree — The amount of physical RAM, in kibibytes, left unused by the system.
Buffers — The amount, in kibibytes, of temporary storage for raw disk blocks.
Cached — The amount of physical RAM, in kibibytes, used as cache memory.
SwapCached — The amount of memory, in kibibytes, that has once been moved into swap, then back into the main memory, but still also remains in the swapfile. This saves I/O, because the memory does not need to be moved into swap again.
Active — The amount of memory, in kibibytes, that has been used more recently and is usually not reclaimed unless absolutely necessary.
Inactive — The amount of memory, in kibibytes, that has been used less recently and is more eligible to be reclaimed for other purposes.
Active(anon) — The amount of anonymous and tmpfs/shmem memory, in kibibytes, that is in active use, or was in active use since the last time the system moved something to swap.
Inactive(anon) — The amount of anonymous and tmpfs/shmem memory, in kibibytes, that is a candidate for eviction.
Active(file) — The amount of file cache memory, in kibibytes, that is in active use, or was in active use since the last time the system reclaimed memory.
Inactive(file) — The amount of file cache memory, in kibibytes, that is newly loaded from the disk, or is a candidate for reclaiming.
Unevictable — The amount of memory, in kibibytes, discovered by the pageout code, that is not evictable because it is locked into memory by user programs.
Mlocked — The total amount of memory, in kibibytes, that is not evictable because it is locked into memory by user programs.
SwapTotal — The total amount of swap available, in kibibytes.
SwapFree — The total amount of swap free, in kibibytes.
Dirty — The total amount of memory, in kibibytes, waiting to be written back to the disk.
Writeback — The total amount of memory, in kibibytes, actively being written back to the disk.
AnonPages — The total amount of memory, in kibibytes, used by pages that are not backed by files and are mapped into userspace page tables.
Mapped — The memory, in kibibytes, used for files that have been mmaped, such as libraries.
Shmem — The total amount of memory, in kibibytes, used by shared memory (shmem) and tmpfs.
Slab — The total amount of memory, in kibibytes, used by the kernel to cache data structures for its own use.
SReclaimable — The part of Slab that can be reclaimed, such as caches.
SUnreclaim — The part of Slab that cannot be reclaimed even when lacking memory.
KernelStack — The amount of memory, in kibibytes, used by the kernel stack allocations done for each task in the system.
PageTables — The total amount of memory, in kibibytes, dedicated to the lowest page table level.
NFS_Unstable — The amount, in kibibytes, of NFS pages sent to the server but not yet committed to the stable storage.
Bounce — The amount of memory, in kibibytes, used for the block device "bounce buffers".
WritebackTmp — The amount of memory, in kibibytes, used by FUSE for temporary writeback buffers.
CommitLimit — The total amount of memory currently available to be allocated on the system based on the overcommit ratio (vm.overcommit_ratio). This limit is only adhered to if strict overcommit accounting is enabled (mode 2 in vm.overcommit_memory). CommitLimit is calculated with the following formula:
([total RAM pages] - [total huge TLB pages]) * overcommit_ratio
───────────────────────────────────────────────────────────────── + [total swap pages]
100
For example, on a system with 1 GB of physical RAM and 7 GB of swap with a vm.overcommit_ratio of 30 it would yield a CommitLimit of 7.3 GB.
Committed_AS — The total amount of memory, in kibibytes, estimated to complete the workload. This value represents the worst case scenario value, and also includes swap memory.
VMallocTotal — The total amount of memory, in kibibytes, of total allocated virtual address space.
VMallocUsed — The total amount of memory, in kibibytes, of used virtual address space.
VMallocChunk — The largest contiguous block of memory, in kibibytes, of available virtual address space.
HardwareCorrupted — The amount of memory, in kibibytes, with physical memory corruption problems, identified by the hardware and set aside by the kernel so it does not get used.
AnonHugePages — The total amount of memory, in kibibytes, used by huge pages that are not backed by files and are mapped into userspace page tables.
HugePages_Total — The total number of hugepages for the system. The number is derived by dividing Hugepagesize by the megabytes set aside for hugepages specified in /proc/sys/vm/hugetlb_pool. This statistic only appears on the x86, Itanium, and AMD64 architectures.
HugePages_Free — The total number of hugepages available for the system. This statistic only appears on the x86, Itanium, and AMD64 architectures.
HugePages_Rsvd — The number of unused huge pages reserved for hugetlbfs.
HugePages_Surp — The number of surplus huge pages.
Hugepagesize — The size for each hugepages unit in kibibytes. By default, the value is 4096 KB on uniprocessor kernels for 32 bit architectures. For SMP, hugemem kernels, and AMD64, the default is 2048 KB. For Itanium architectures, the default is 262144 KB. This statistic only appears on the x86, Itanium, and AMD64 architectures.
DirectMap4k — The amount of memory, in kibibytes, mapped into kernel address space with 4 kB page mappings.
DirectMap2M — The amount of memory, in kibibytes, mapped into kernel address space with 2 MB page mappings.
This file displays a list of all modules loaded into the kernel. Its contents vary based on the configuration and use of your system, but it should be organized in a similar manner to this sample /proc/modules file output:
# cat /proc/modules |grep -iE "sas|i40e|scsi"
iscsi_target_mod 291661 1 ib_isert, Live 0xffffffffc06c2000
libiscsi 57233 1 ib_iser, Live 0xffffffffc056c000
scsi_transport_iscsi 99909 2 ib_iser,libiscsi, Live 0xffffffffc05d9000
target_core_mod 340729 3 ib_isert,iscsi_target_mod,ib_srpt, Live 0xffffffffc0584000
scsi_transport_srp 20993 1 ib_srp, Live 0xffffffffc0488000
scsi_tgt 20027 1 scsi_transport_srp, Live 0xffffffffc047d000
mpt3sas 357803 3 - Live 0xffffffffc02e0000 (OE)
i40e 464708 0 - Live 0xffffffffc0114000 (OE)
ptp 19231 1 i40e, Live 0xffffffffc00b9000
raid_class 13554 1 mpt3sas, Live 0xffffffffc005c000
scsi_transport_sas 41224 2 ses,mpt3sas, Live 0xffffffffc0073000
The first column contains the name of the module.
The second column refers to the memory size of the module, in bytes.
The third column lists how many instances of the module are currently loaded. A value of zero represents an unloaded module.
The fourth column states if the module depends upon another module to be present in order to function, and lists those other modules.
The fifth column lists what load state the module is in: Live, Loading, or Unloading are the only possible values.
The sixth column lists the current kernel memory offset for the loaded module. This information can be useful for debugging purposes, or for profiling tools such as oprofile.
This file provides a list of all mounts in use by the system:
# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=49206472k,nr_inodes=12301618,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,seclabel,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
efivarfs /sys/firmware/efi/efivars efivarfs rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,seclabel,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,seclabel,nosuid,nodev,noexec,relatime,net_prio,net_cls 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,seclabel,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,seclabel,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,seclabel,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,seclabel,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,seclabel,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,seclabel,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,seclabel,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,seclabel,nosuid,nodev,noexec,relatime,freezer 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/rhel00-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=16627 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
/dev/sdd2 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/sdd1 /boot/efi vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro 0 0
/dev/mapper/rhel00-home /home xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
tmpfs /run/user/42 tmpfs rw,seclabel,nosuid,nodev,relatime,size=9844752k,mode=700,uid=42,gid=42 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=9844752k,mode=700 0 0
This file contains partition block allocation information. A sampling of this file from a basic system looks similar to the following:
# cat /proc/partitions
major minor #blocks name
8 0 586061784 sda
8 1 586059776 sda1
8 16 586061784 sdb
8 17 586059776 sdb1
8 32 586061784 sdc
8 33 102400 sdc1
8 37 4193280 sdc5
8 38 4193280 sdc6
8 39 125724672 sdc7
8 40 451843015 sdc8
8 48 586061784 sdd
8 49 204800 sdd1
8 50 1048576 sdd2
8 51 584806400 sdd3
8 64 586061784 sde
8 65 586059776 sde1
8 80 586061784 sdf
253 0 52428800 dm-0
253 1 4194304 dm-1
253 2 528179200 dm-2
Most of the information here is of little importance to the user, except for the following columns:
major — The major number of the device with this partition. The major number in the /proc/partitions, (3), corresponds with the block device ide0, in /proc/devices.
minor — The minor number of the device with this partition. This serves to separate the partitions into different physical devices and relates to the number at the end of the name of the partition.
#blocks — Lists the number of physical disk blocks contained in a particular partition.
name — The name of the partition.
The primary file in this directory is /proc/scsi/scsi, which contains a list of every recognized SCSI device. From this listing, the type of device, as well as the model name, vendor, SCSI channel and ID data is available.
This file measures swap space and its utilization. For a system with only one swap partition, the output of /proc/swaps may look similar to the following
[root@localhost scsi]# free -k
total used free shared buff/cache available
Mem: 98447508 1872008 92336912 19912 4238588 95778248
Swap: 4194300 0 4194300
[root@localhost scsi]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 0 -1
While some of this information can be found in other files in the /proc/ directory, /proc/swap provides a snapshot of every swap file name, the type of swap space, the total size, and the amount of space in use (in kilobytes). The priority column is useful when multiple swap files are in use. The lower the priority, the more likely the swap file is to be used.
比较特殊的一个目录,不仅可以查看一些系统的信息,还可以立即启用、禁用一些内核特性。
[root@localhost scsi]# ls -l /proc/sys
total 0
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 abi
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 crypto
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 debug
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 dev
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 fs
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 kernel
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 net
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 sunrpc
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 user
dr-xr-xr-x. 1 root root 0 Aug 26 16:27 vm
This file contains information detailing how long the system has been on since its last restart. The output of /proc/uptime is quite minimal:
[root@localhost ~]# cat /proc/uptime
942390.01 60310373.54
[root@localhost ~]# uptime
14:14:39 up 10 days, 21:47, 2 users, load average: 0.00, 0.01, 0.05
The first value represents the total number of seconds the system has been up. The second value is the sum of how much time each core has spent idle, in seconds. Consequently, the second value may be greater than the overall system uptime on systems with multiple cores.
This file specifies the version of the Linux kernel, the version of gcc used to compile the kernel, and the time of kernel compilation. It also contains the kernel compiler's user name (in parentheses).
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-862.el7.x86_64 (mockbuild@x86-034.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Wed Mar 21 18:14:51 EDT 2018
SCSI/SATA Devices
[root@9-112 ~]# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00 注意host/channel/id/lun.
Vendor: LENOVO Model: AL15SEB060N Rev: TB54
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 01 Lun: 00
Vendor: LENOVO Model: AL15SEB060N Rev: TB54
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: LENOVO Model: AL15SEB060N Rev: TB54
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 03 Lun: 00
Vendor: LENOVO Model: AL15SEB060N Rev: TB54
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 04 Lun: 00
Vendor: LENOVO Model: AL15SEB060N Rev: TB54
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 05 Lun: 00
Vendor: LENOVO Model: AL15SEB060N Rev: TB54
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 06 Lun: 00
Vendor: BROADCOM Model: VirtualSES Rev: 03
Type: Enclosure ANSI SCSI revision: 07
[root@9-112 ~]# lsscsi
[0:0:0:0] disk LENOVO AL15SEB060N TB54 /dev/sda
[0:0:1:0] disk LENOVO AL15SEB060N TB54 /dev/sdb
[0:0:2:0] disk LENOVO AL15SEB060N TB54 /dev/sdc
[0:0:3:0] disk LENOVO AL15SEB060N TB54 /dev/sdd
[0:0:4:0] disk LENOVO AL15SEB060N TB54 /dev/sde
[0:0:5:0] disk LENOVO AL15SEB060N TB54 /dev/sdf
[0:0:6:0] enclosu BROADCOM VirtualSES 03 -
[root@9-112 ~]#