基本概念
内核参数(Kernel Parameters)是Linux系统内核中的一些配置选项,用于控制和调整系统的运行行为。通过修改内核参数,可以对系统的性能、安全性和功能等方面进行配置和调优。
内核参数存储在/proc/sys/
目录下,以文件的形式存在。可以通过修改这些文件的内容来改变内核参数的值。
参数的值是一个数字或字符串,通过修改参数的值,可以改变相应系统行为的配置选项。
配置内核参数
查看当前内核参数
在开始配置内核参数之前,首先查看当前系统的内核参数配置。
可以使用sysctl -a
命令来查看当前所有内核参数的值:
sysctl -a
该命令会列出当前系统的所有内核参数及其值。
临时修改内核参数
要临时修改内核参数的值,可以使用sysctl
命令。
使用以下命令来修改内核参数的值:
sysctl 参数名=新值
例如,要将vm.swappiness
参数的值修改为60
,可以执行以下命令:
sysctl vm.swappiness=60
该命令会立即修改vm.swappiness
参数的值为60
,但是该修改只会在当前的会话中生效,重启系统后会失效。
永久修改内核参数
如果希望修改的内核参数的值永久生效,可以通过修改配置文件的方式。
可以编辑/etc/sysctl.conf
文件,该文件包含了系统启动时加载的内核参数的配置。
打开/etc/sysctl.conf
文件,可以使用任何文本编辑器:
sudo vi /etc/sysctl.conf
在/etc/sysctl.conf
文件中,每一行代表一个内核参数的配置。
要修改一个内核参数的值,只需要在相应的行中修改参数的值即可。
例如,要修改vm.swappiness
参数的值为60
,可以将该行修改为:
vm.swappiness = 60
保存文件并退出编辑器。
然后,运行以下命令使修改的生效:
sudo sysctl -p
该命令会重新加载/etc/sysctl.conf
文件中的配置,并使之生效。
预设内核参数
Ubuntu和其他一些Linux发行版还提供了一个/etc/sysctl.d/
目录,在这个目录中可以添加预设的内核参数配置文件。
可以为每个内核参数创建一个单独的文件,并在文件中指定参数的值。
例如,要添加一个名为99-my-sysctl.conf
的预设内核参数配置文件,可以运行以下命令:
sudo vi /etc/sysctl.d/99-my-sysctl.conf
在99-my-sysctl.conf
文件中,可以配置内核参数的值:
vm.swappiness = 60
保存文件并退出编辑器。
然后,运行以下命令使修改的生效:
sudo sysctl -p /etc/sysctl.d/99-my-sysctl.conf
该命令会使/etc/sysctl.d/99-my-sysctl.conf
文件中的配置生效。
通过这种方式配置的内核参数,将会在系统启动时自动加载并生效。
常用的内核参数
vm.swappiness
vm.swappiness参数控制系统在不够内存时,将内存中的页面(包含进程执行代码和数据)交换到交换分区的比例。
该参数的值范围是0-100
,默认值是60
。
当vm.swappiness
的值为0
时,系统几乎不会将页面交换到交换分区的空间,只有在非常紧急的情况下才会发生交换。
当vm.swappiness
的值为100
时,系统会尽可能频繁地将页面交换到交换分区,以便释放内存。
vm.vfs_cache_pressure
vm.vfs_cache_pressure参数控制系统回收文件系统缓存的倾向程度。
文件系统缓存是指内核用于存储文件系统元数据(如文件的inode,目录结构等)和缓存文件数据(如读取的文件内容)的内存区域。
该参数的值范围是0-1000
,默认值是100
。
当vm.vfs_cache_pressure
的值为0
时,系统会尽量保留缓存的数据,而不进行回收。
当vm.vfs_cache_pressure
的值为1000
时,系统会更积极地回收缓存的数据,以便释放内存。
net.core.somaxconn
net.core.somaxconn参数控制Linux内核中可接受的最大TCP连接数。
TCP连接是指两个不同主机之间通过TCP协议建立的连接。
该参数的值表示系统在任何时刻可以同时处理的最大连接数。
net.core.somaxconn = 1024
该配置将最大TCP连接数设置为1024
。
总结
通过修改内核参数,可以对Linux系统的运行行为进行配置和调优。
可以使用sysctl
命令临时修改内核参数的值,使用/etc/sysctl.conf
文件或/etc/sysctl.d/
目录永久修改内核参数的值。
一些常用的内核参数包括vm.swappiness
、vm.vfs_cache_pressure
和net.core.somaxconn
。
根据实际需求,可以根据需要调整这些参数的值以满足系统的性能和安全性要求。