Skip to content

zhuinfra/sysctl-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sysctl-lab

A hands-on lab to explore and understand Linux sysctl kernel parameters through experiments.

项目简介

sysctl-lab 是一个交互式实验环境,用于学习和理解 Linux 内核参数。通过这个工具,你可以:

  • 查看所有可用的内核参数
  • 搜索特定参数
  • 查看参数详情
  • 修改参数并观察效果
  • 运行预设的实验来测试不同参数的影响
  • 保存实验结果以便后续分析

系统要求

  • Linux 操作系统
  • root 权限
  • bash shell
  • 可选:stress-ng(用于运行压力测试)

安装和使用

1. 克隆项目

git clone <repository-url>
cd sysctl-lab

2. 设置环境

make setup

3. 运行实验环境

sudo make run

4. 主菜单选项

运行后,你将看到以下主菜单:

  1. List all sysctl parameters - 列出所有可用的内核参数
  2. Search for parameters - 搜索特定参数
  3. Show parameter details - 查看参数详情
  4. Modify a parameter - 修改参数值
  5. Run predefined experiments - 运行预设实验
  6. Show experiment results - 查看保存的实验结果
  7. Exit - 退出程序

预设实验

项目包含以下预设实验:

1. 内存管理实验 (vm.swappiness)

  • 测试不同 swappiness 值对内存使用的影响
  • 测试值:10, 50, 90
  • 运行内存压力测试并记录结果

2. 网络性能实验 (net.core.somaxconn)

  • 测试不同连接队列大小对网络性能的影响
  • 测试值:128, 1024, 4096
  • 运行网络测试并记录结果

3. 文件系统实验 (fs.file-max)

  • 测试不同文件句柄限制对系统的影响
  • 测试值:100000, 500000, 1000000
  • 检查文件句柄使用情况

4. 进程调度实验 (kernel.sched_autogroup_enabled)

  • 测试自动组调度对进程性能的影响
  • 测试值:0(禁用), 1(启用)
  • 运行 CPU 压力测试并记录结果

实验结果

所有实验结果都保存在 experiments/ 目录中,文件名包含时间戳和实验类型。你可以通过主菜单中的 "Show experiment results" 选项查看这些结果。

日志

系统操作和实验过程会记录在 logs/ 目录中,方便后续分析和排查问题。

安全注意事项

  • 本工具需要 root 权限才能修改内核参数
  • 修改内核参数可能会影响系统性能和稳定性
  • 预设实验会自动恢复原始参数值,但手动修改的参数需要自行恢复
  • 建议在测试环境中使用,不要在生产环境中随意修改内核参数

扩展实验

你可以通过修改 lab.sh 文件添加自定义实验。每个实验函数都遵循相同的模式:

  1. 保存原始参数值
  2. 测试不同参数值
  3. 运行相关测试
  4. 保存结果
  5. 恢复原始参数值

贡献

欢迎提交问题和改进建议!

许可证

本项目采用 MIT 许可证。

About

A hands-on lab to explore and understand Linux sysctl kernel parameters through experiments.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors