Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 內核內置模塊查看與參數調優完全指南

編輯:關於 Linux

現代 Linux 內核採用模塊化設計:核心功能編譯為內置模塊(built-in,隨內核啟動加載),擴展功能編譯為可加載模塊(LKM,運行時動態加載)。本文詳細講解如何枚舉內置模塊、查看其參數與當前值、並進行運行時調優,助您精細掌控內核行為。

一、內置模塊 vs 可加載模塊:核心差異

特性內置模塊可加載模塊 (LKM)
加載時機內核啟動階段,不可卸載運行時按需加載/卸載
管理命令無專用命令,通過 /sys、/proc 交互modprobe, insmod, rmmod, lsmod, modinfo
參數傳遞內核命令行 module.param=value 或 /sys/module/模塊加載時 modprobe module param=value 或 /sys/module/
典型例子ext4, xfs, tcp_cubic, usbcorenvidia, vboxdrv, 特定網卡/聲卡驅動

二、枚舉所有內置模塊

方法 1:讀取 modules.builtin(推薦,標準、完整)

cat /lib/modules/$(uname -r)/modules.builtin
# 輸出示例:
# kernel/fs/ext4/ext4.ko
# kernel/net/ipv4/tcp_cubic.ko
# kernel/drivers/usb/core/usbcore.ko

每行對應一個 .ko 文件相對路徑,模塊名為文件名去擴展名(如 tcp_cubic)。

方法 2:掃描 /sys/module/ 目錄(直觀、含參數目錄)

ls /sys/module/ | grep -v '^$'
# 顯示所有已加載模塊(含內置與 LKM)目錄名
# 內置模塊目錄下通常無 initstate 文件,或 initstate 為 "live"

方法 3:內核日志檢索(僅限啟動時加載信息)

dmesg -T | grep -i 'built-in'
# 或
journalctl -k | grep -i 'module.*built-in'

三、查看與修改內置模塊參數

所有模塊(內置+LKM)在 /sys/module//parameters/ 暴露參數文件,每個文件對應一個參數,內容為當前值。

1. 列出模塊所有參數

ls /sys/module/tcp_cubic/parameters/
# 輸出:tcp_friendliness  tcp_window_scaling  ...

2. 讀取單個參數值

cat /sys/module/tcp_cubic/parameters/tcp_friendliness
# 輸出:1  (默認啟用 TCP Friendliness)

3. 批量查看所有參數及值

for p in /sys/module/tcp_cubic/parameters/*; do
    echo "$(basename $p): $(cat $p)"
done

4. 運行時修改參數(需 root,即時生效,重啟失效)

# 關閉 TCP Cubic Friendliness(某些高延遲鏈路可能提升吞吐)
echo 0 > /sys/module/tcp_cubic/parameters/tcp_friendliness

# 驗證
cat /sys/module/tcp_cubic/parameters/tcp_friendliness
# 0

注意:並非所有參數均可寫入,只讀參數會報 Permission denied 或 Invalid argument。

四、永久化參數配置

方法 1:內核命令行參數(Grub,推薦)

# 編輯 /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet tcp_cubic.tcp_friendliness=0"

# 更新 grub 並重啟
grub2-mkconfig -o /boot/grub2/grub.cfg  # RHEL系
update-grub                             # Debian系
reboot

方法 2:modprobe.d 配置文件(僅適用於可加載模塊,內置模塊無效)

# /etc/modprobe.d/tcp_cubic.conf
options tcp_cubic tcp_friendliness=0
# 僅在模塊為 LKM 時生效

方法 3:systemd-sysctl / rc.local 臨時腳本(不推薦生產)

# /etc/rc.local 或 systemd 服務
echo 0 > /sys/module/tcp_cubic/parameters/tcp_friendliness

五、實戰:常見內核子系統關鍵參數調優清單

子系統/模塊關鍵參數推薦值/場景說明
TCP 拥塞控制 (tcp_cubic)tcp_friendliness0 (高延遲/高帶寬長肥網絡)關閉後 Cubic 更激進佔用帶寬,可能不公平
虛擬內存 (vm)swappiness10 (数据库/緩存服務器) / 60 (桌面默認)降低 swap 激進度,保護熱頁面
虛擬內存 (vm)vfs_cache_pressure50 (文件服務器) / 100 (默認)降低對目錄項/索引節點緩存的回收傾向
網絡栈 (net.core)net.core.somaxconn4096 (高併發 Web)listen() 佇列長度,防連接丟包
網絡栈 (net.ipv4)net.ipv4.tcp_tw_reuse1 (高併發短連接)安全復用 TIME_WAIT 端口
文件系統 (ext4)ext4.fsync_mode0 (性能優先) / 1 (數據安全)控制 fsync() 行為
CPU 調度 (kernel.sched)sched_min_granularity_ns10000000 (低延遲互動)調度最小時間顆粒度

六、驗證參數生效的標準流程

  1. 修改配置:/etc/default/grub 或 /etc/sysctl.d/99-custom.conf。
  2. 重啟/應用:reboot 或 sysctl --system。
  3. 多源交叉驗證:
    cat /proc/cmdline 確認內核命令行參數
    cat /sys/module/tcp_cubic/parameters/tcp_friendliness 確認運行時值
    sysctl net.ipv4.tcp_tw_reuse 確認 sysctl 參數
  4. 壓測對比:使用 iperf3, wrk, fio 等工具量化效果。

modules.builtin文件示例

sysfs模塊參數目錄結構

tcp_cubic參數查看示例

七、總結

  • 內置模塊列表:cat /lib/modules/$(uname -r)/modules.builtin。
  • 參數查看/修改統一入口:/sys/module//parameters/。
  • 永久化首選 Grub 內核命令行,適用於所有內置模塊。
  • 調優必須 有指標、有基線、有壓測、有回滾,切忌盲目跟風參數。

掌握內置模塊參數視窗,將內核從「黑盒」轉化為可觀測、可調優、可交付的基礎設施組件。

Copyright © Windows教程網 All Rights Reserved