内核模块和内核参数
Posted 皮特王同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核模块和内核参数相关的知识,希望对你有一定的参考价值。
内核模块
Linux内核采用模块化设计,使得系统内核可以维持最小化,同时又保证内核功能的可扩展性。内核模块的位置在/lib/modules/<内核版本>/ 这个目录下。
lsmod查看已经加载的内核模块
[[email protected] 2.6.32-504.el6.x86_64]# lsmod Module Size Used by tcp_diag 1041 0 inet_diag 8735 1 tcp_diag ipv6 334932 266 microcode 112653 0 vmware_balloon 7199 0 btusb 16915 0 bluetooth 99271 1 btusb rfkill 19255 1 bluetooth snd_ens1371 21587 0 snd_rawmidi 23017 1 snd_ens1371 #模块 占用内存大小 多少进程正在使用
modprobe加载和卸载内核模块
#加载 modprobe [[email protected] 2.6.32-504.el6.x86_64]# modprobe ip_vs [[email protected] 2.6.32-504.el6.x86_64]# lsmod | grep ip_vs ip_vs 125694 0 libcrc32c 1246 1 ip_vs ipv6 334932 267 ip_vs #卸载 modprobe -r [[email protected] 2.6.32-504.el6.x86_64]# modprobe -r ip_vs [[email protected] 2.6.32-504.el6.x86_64]# lsmod | grep ip_vs #开机自动加载
[[email protected] 2.6.32-504.el6.x86_64]# echo "modprobe ip_vs" >> /etc/rc.local
modinfo查看内核模块信息
[[email protected] 2.6.32-504.el6.x86_64]# modinfo ip_vs filename: /lib/modules/2.6.32-504.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko license: GPL srcversion: 3FD98B56AD8DC6FD87609BA depends: ipv6,libcrc32c vermagic: 2.6.32-504.el6.x86_64 SMP mod_unload modversions parm: conn_tab_bits:Set connections‘ hash size (int)
内核参数
Linux内核参数会随着系统启动被写入内存,/proc目录是一个虚拟文件系统,用于映射内存数据,每个内核参数都以独立的文件形式存放在/proc目录下。
临时调整内核参数
我们可以通过修改/proc目录下的文件来调整内核参数,这种调整立刻生效,但系统重启后就失效。
#打开内核路由转发功能 [[email protected] proc]# echo "1" > /proc/sys/net/ipv4/ip_forward #禁止其他主机ping自己(禁止所有icmp回包) [[email protected] proc]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all #调整文件描述符即可以打开的文件的最大数量 [[email protected] proc]# echo "108248" > /proc/sys/fs/file-max
永久调整内核参数
我们可以通过修改配置文件/etc/sysctl.conf永久调整内核参数,并通过sysctl -p命令使参数立刻生效。
[[email protected] proc]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.icmp_echo_ignore_all = 1 fs.file-max = 108248 [[email protected] proc]# sysctl -p
以上是关于内核模块和内核参数的主要内容,如果未能解决你的问题,请参考以下文章
什么是在 C++ 中获取总内核数量的跨平台代码片段? [复制]