内核调优之kernel.sem,fs.aio-max-nr, fs.file-max,kernel.pid_max
注: 调整内核参数后,使之生效需要执行此命令: sysctl -p
一、 kernel.sem
sem其实是semaphores【信号】的缩写
cat /proc/sys/kernel/sem
250 32000 100 128
4个数据分别对应
SEMMSL SEMMNS SEMOPM SEMMNI
250 SEMMSL max semaphores per array 信号集容纳最大信号数量
32000 SEMMNS max semaphores system wide 所有信号的最大数量
32 SEMOPM max ops per semop call 调用单个信号集中最大信号数量
128 SEMMNI max number of arrays 信号集的最大值
使用ipcs命令也可查看到这个信息:
ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
二、 fs.aio-max-nr
proc 文件系统有两个控制io的虚拟文件,它们可以用来对异步 I/O 的性能进行优化:
-
/proc/sys/fs/aio-nr 文件提供了系统范围异步 I/O 请求现在的数目。
-
/proc/sys/fs/aio-max-nr 文件是所允许的并发请求的最大个数。
在一个程序中如果涉及到磁盘的IO操作时,有两种情况
1. 程序等待IO操作完成,CPU再接下来处理程序的其他部分(等待IO的时间段内,CPU处于Idle Waiting状态)。
2. 程序不等待IO操作完成,允许CPU处理接下来的其他任务(或者理解为允许CPU处理接下来的不依赖于IO完成的任务)。
显然,第一种情况,虽然CPU负载较低,CPU的资源白白的浪费了,也就是同步IO。第二种情况更有利于CPU的充分利用,这就是异步IO(asynchronous IO)
三、 fs.file-max
在 Linux 环境中,一切皆文件,设备是文件,目录是文件,socket 也是文件。
/proc/sys/fs/file-max:
这个文件决定了系统级别所有进程可以打开的文件描述符的数量限制,如果内核中遇到VFS: file-max limit <number> reached
的信息,那么就提高这个值。
四、 kernel.pid_max
进程 ID(PID)是节点上的一种基础资源,容易在尚未超出其它资源约束的时候触及进程ID数量上限,进而导致节点不稳定。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!