【免费下载链接】nix-cachyos-kernel
CachyOS kernel for NixOS
nix-cachyos-kernel是 NixOS 平台上的 CachyOS 高性能内核包,内置了官方补丁与性能调优(HZ 定时器频率、NO_HZ_FULL 动态滴答、PREEMPT 抢占模型等)。本文用大白话带你看懂这些内核配置选项,并教你如何在 NixOS 中一键自定义内核。
nix-cachyos-kernel 是什么?🧩
一句话概括:它把 CachyOS 的调优内核「搬」到了 NixOS 上。
- 提供latest / LTS / BORE 调度器 / RT 实时 / 加固版等多种内核变体
- 每个变体都有
LTO(链接期优化)和 CPU 架构版本(x86_64-v2/v3/v4、zen4) - 版本随 CachyOS 上游每日自动同步,构建脚本见 update.py
- 内核定义与预设调优集中在 kernel-cachyos/default.nix
💡 大多数用户直接选用现成变体即可;只有想精细微调时,才需要本文的主角——
override调优参数。
三大调优选项:概念一文讲清
HZ:内核「心跳」的频率(hzTicks)
HZ决定内核时钟中断的频率,可以理解为内核每秒「醒来看一眼」多少次:
| 取值 | 特点 | 适用场景 |
|---|---|---|
1000(默认) | 响应最快,开销略高 | 桌面、游戏、低延迟需求 |
250/300 | 更省电、上下文切换更少 | 服务器、长时间空闲的机器 |
100 | 最省资源 | 嵌入式/极端省电(一般不推荐) |
null | 不覆盖,沿用 defconfig | — |
对应源码实现见 cachySettings.nix,例如选300时实际生效的是HZ_300=yes+HZ=300。
NO_HZ_FULL:让 CPU 彻底「安静」下来(tickrate)
NO_HZ(动态滴答)允许 CPU 在没有任务时停止产生时钟中断,NO_HZ_FULL更进一步:把指定核心上的时钟中断完全关掉,减少空转开销、压低延迟。
项目通过tickrate参数映射到一组内核选项:
| tickrate | 实际内核选项 | 说明 |
|---|---|---|
full(默认) | NO_HZ_FULL=yes+NO_HZ_IDLE=yes+CONTEXT_TRACKING=yes | 完整动态滴答,性能向 |
idle | NO_HZ_IDLE=yes | 仅空闲时停滴答,更保守 |
periodic | HZ_PERIODIC=yes | 传统固定周期中断 |
null | 不覆盖 | — |
映射关系见 cachySettings.nix。
PREEMPT:内核被「打断」的粒度(preemptType)
抢占模型决定内核能否及时响应高优先级任务,直接影响输入延迟和音频卡顿:
| preemptType | 对应选项 | 通俗解释 |
|---|---|---|
full(默认) | PREEMPT_DYNAMIC=yes+PREEMPT=yes | 随时可被打断,延迟最低,适合游戏/实时音 |
lazy | PREEMPT_LAZY=yes | 被打断的任务稍后再补,延迟略高、吞吐更好 |
voluntary | PREEMPT_VOLUNTARY=yes | 只在内核自愿让出的点切换 |
none | PREEMPT_NONE=yes | 基本不可抢占,吞吐最高但延迟大,服务器向 |
null | 不覆盖 | — |
实现见 cachySettings.nix。
📌 一个现成例子:项目里的 server 变体就采用了
hzTicks = "300"+preemptType = "none"的低延迟干扰配置,定义见 default.nix。
实战:在 NixOS 中自定义你的 CachyOS 内核 ⚙️
所有调优参数都可以通过override传入,参数清单与默认值见 mkCachyKernel.nix。完整说明在 README.md 的 "How to customize CachyOS kernel" 一节。
最小示例(游戏向组合:1000Hz 心跳 + 完整动态滴答 + 全抢占 + BORE 调度器):
{ kernel = pkgs.cachyosKernels.linux-cachyos-latest.override { cpusched = "bore"; # 调度器:eevdf / bore / bmq / rt / rt-bore hzTicks = "1000"; # 定时器频率 tickrate = "full"; # NO_HZ_FULL 动态滴答 preemptType = "full"; # 抢占模型 }; boot.kernelPackages = pkgs.linuxKernel.packagesFor kernel; }⚠️ 注意:
cpusched选rt或rt-bore时必须同时设rt = true(构建时有断言检查,见 mkCachyKernel.nix)。
其他常用调优参数速查表 📋
除了三大主角,mkCachyKernel.nix 还支持这些选项:
| 参数 | 默认值 | 可选值 | 作用 |
|---|---|---|---|
lto | "none" | "thin"/"full" | Clang 链接期优化,代码更紧凑、常略提速 |
processorOpt | "x86_64-v1" | v2/v3/v4/zen4/native | CPU 指令集级别,越新越快 |
hugepage | "always" | "madvise"/null | 透明大页策略,降低 TLB 缺失 |
bbr3 | false | true | 启用 BBR3 拥塞控制,弱网下载更稳 |
kcfi | false | true | 内核控制流完整性,安全加固 |
performanceGovernor | false | true | 默认使用 performance 调频器 |
ccHarder | true | false | -O3级别内核编译优化 |
hardened/rt/handheld/acpiCall | false | true | 安全加固 / 实时 / 掌机补丁 |
按场景选择:三套推荐组合 🎯
| 场景 | 推荐起点 | 关键参数 |
|---|---|---|
| 🎮 游戏/低延迟桌面 | linux-cachyos-bore或latest | hzTicks="1000"、tickrate="full"、preemptType="full"、processorOpt匹配你的 CPU |
| 🖥️ 工作站/编译 | 带-lto的变体 | lto="thin"+processorOpt="x86_64-v3/v4" |
| 🏢 服务器/省电 | linux-cachyos-server | hzTicks="300"、preemptType="none"(变体已内置) |
常见问题 ❓
Q:自定义内核后构建失败?多半是 CachyOS 补丁与 nixpkgs 内核版本不同步导致的(如出现 "File not found"),等仓库每日同步(update.py)后会自动修复。
Q:直接选官方变体和自定义有什么区别?官方变体(如linuxPackages-cachyos-bore-lto-x86_64-v3)已包含 LTO、CPU 优化等设置,且命中二进制缓存、秒速安装;自定义override则适合组合变体没有提供的参数(如改hzTicks、bbr3等)。
Q:怎么查当前可用的版本?运行nix flake show github:xddxdd/nix-cachyos-kernel/release即可查看 version.json 对应的最新构建。
写在最后
HZ管「心跳快慢」、NO_HZ_FULL管「CPU 能不能安静」、PREEMPT管「打断的粒度」——记住这三句话,再对照 cachySettings.nix 中的映射,你就能读懂 nix-cachyos-kernel 的全部调优逻辑。先跑默认配置体验 BORE 调度器,再按场景微调,是风险最低的上手路径。🚀
【免费下载链接】nix-cachyos-kernel
CachyOS kernel for NixOS
相关推荐
拆解 nix-cachyos-kernel 核心实现:mkCachyKernel 如何在 buildLinux 之上打造 CachyOS 内核
拆解 nix cachyos kernel 核心实现:mkCachyKernel 如何在 buildLinux 之上打造 CachyOS 内核 nix cach
ADR 团队协作实践指南:从 "decisions" 命名到可变式活文档(architecture-decision-record 项目经验)
ADR 团队协作实践指南:从 "decisions" 命名到可变式活文档(architecture decision record 项目经验) 导读 架构决策记
CachyOS内核优化终极指南:从快速上手到深度调优完整教程
CachyOS内核优化终极指南:从快速上手到深度调优完整教程 本文为Linux用户提供CachyOS内核性能调优的完整解决方案,涵盖从基础安装到高级优化的全流程
操作系统
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考