Procfs 是 Linux 内核信息的抽象文件接口,大量内核中的信息以及可调参数都被作为常规文件映射到一个目录树中,这样我们就可以直接对系统信息进行查取和调整。
同时 procfs 也提供了一个接口,使得其他内核模块或用户态程序可以通过 procfs 进行参数的传递。大量的系统工具也通过 procfs 获取内核参数,例如 ps、lspci 等等,没有 procfs 它们将可能不能正常工作。
为了支持 procfs,在编译内核时必须加上 procfs 的选项。
在内核源代码的 Documentation/filesystems/proc.txt 有 procfs 的详细说明。
挂载 procfs 方式有两种,一般系统都在开机时直接加载。
1. 配置 /etc/fstab (大多数系统中默认)
none /proc proc defaults 0 0
2. 使用命令加载(要求内核支持 procfs)
mount -t proc none /proc
使用编辑工具或 cat 命令直接修改 /proc/sys 目录下的文件,调整是立即生效的,直到系统重启。
Sysctl 是从 BSD 系统继承而来的一种系统参数动态调整方法,修改 /etc/sysctl.conf 后在下次启动时自动生效。不过使用 sysctl -p 可以让改变立即生效。
Procfs 主要包含三大类部分:进程相关部分,系统信息部分,以及系统子系统部分。
处于 /proc 的顶层目录以数字为名的子目录,数字就是相关进程的进程 ID 号。
处于 /proc 的顶层目录的文件,主要是内核的基本信息。
非以数字命名的特殊目录,这包括内核各个重要子系统的信息和可调参数。
每个子目录就是一个内核子系统,主要内核子系统包括:
目录 | 描述 |
---|---|
bus | 总线信息(只读) |
drivers | 驱动信息(只读) |
fs | 文件系统特别信息(只读) |
ide | IDE 接口信息(只读) |
irq | IRQ 信息(只读) |
net | 网络子系统信息(只读) |
scsi | SCSI 子系统信息(只读) |
sysvipc | IPC 子系统信息(只读) |
tty | TTY 子系统信息(只读) |
sys | 系统内核可调参数(可调) |
大部分内核参数应该时只读,部分系统内核可调参数有:
目录 | 描述 |
---|---|
/proc/sys/fs | 文件系统数据 |
/proc/sys/kernel | 通用系统参数 |
/proc/sys/vm | 虚拟内存系统 |
/proc/sys/dev | 设备相关参数 |
/proc/sys/sunrpc | 远程过程调用 |
/proc/sys/net | 网络子系统可调参数 |
/proc/sys/net/ipv4 | IPV4 设置 |
命令 | 说明 |
---|---|
/proc/cpuinfo | CPU |
/proc/devices | 设备驱动列表 |
/proc/dma | 当前使用的 DMA通道 |
/proc/filesystems | 核心配置的文件系统 |
/proc/interrupts | 中断 |
/proc/ioports | 设备 IO 端口 |
/proc/kcore | 系统物理内存映象 |
/proc/loadavg | 系统平均负载 |
/proc/meminfo | 内存信息 |
/proc/modules | 当前加载的核心模块 |
/proc/partitions | 所有设备的所有分区 |
/proc/pci | PCI 设备的信息 |
/proc/swaps | 所有 swap 分区的信息 |
/proc/uptime | 系统启动的时间长度 |
/proc/version | Linux kernel 的版本号信息 |
/proc/cmdline | 系统内核引导时的命令行参数 |
net.ipv4.ip_forward = 1
为了优化客户端的网络访问性能,可以增加 TCP buffer 的大小。但是在访问频繁的服务器上调整这个参数会导致系统 buffer 被耗尽。
# increase Linux TCP buffer limits net.core.rmem_max = 8388608 net.core.wmem_max = 8388608 net.core.rmem_default = 65536 net.core.wmem_default = 65536 # increase Linux autotuning TCP buffer limits net.ipv4.tcp_rmem = 4096 87380 8388608 net.ipv4.tcp_wmem = 4096 65536 8388608 net.ipv4.tcp_mem = 8388608 8388608 8388608
Comments
There are currently no comments
New Comment