内核调优之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数量上限,进而导致节点不稳定。

 
查看全局的pid_max方法:
方法一:
cat /proc/sys/kernel/pid_max
方法二:
# sysctl kernel.pid_max
kernel.pid_max = 32768
 
临时修改方法,重启机器后会失效:
echo 65535 > /proc/sys/kernel/pid_max
 
永久生效方法:
echo 65535 > /proc/sys/kernel/pid_max
在/etc/sysctl.conf中添加kernel.pid_max = 65535
# vim /etc/sysctl.conf
kernel.pid_max = 65535
或者:
sed '/kernel.pid_max/d' /etc/sysctl.conf
echo "kernel.pid_max = 65535" >> /etc/sysctl.conf
sysctl -p
posted @ 2022-12-21 11:10  咿呀哒喏  阅读(3190)  评论(0编辑  收藏  举报