zampierilucas/scx_horoscope

GitHub: zampierilucas/scx_horoscope

一个基于 sched_ext 框架的功能完备但纯娱乐性质的 Linux CPU 调度器,根据真实行星位置和占星原理做出调度决策。

Stars: 1249 | Forks: 28

# scx_horoscope - 星象 CPU 调度器 一个功能完备的 sched_ext 调度器,根据实时行星位置、星座和占星原理做出真实的 CPU 调度决策。这确实会加载到 Linux 内核中并调度你的系统任务。既然宇宙能影响我们的生活,为什么不能影响我们的 CPU 调度呢? ![Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8480c298fb212914.gif) ## 功能特性 - **真实的行星计算**:使用 `astro` crate 进行精确的的地心行星位置计算 - **基于星座的任务分类**:任务根据其占星亲和力进行分类 - **逆行检测**:通过比较每日位置变化来检测真实的逆行运动 - 负面影响会触发 50% 的时间片惩罚 - **月相调度**:月相影响交互式任务(shell、编辑器),满月提供 1.4 倍加成 - **元素增益与减益**:火象星座提升 CPU 任务(1.5 倍),水象星座削弱它们(0.6 倍)—— 元素对立引发宇宙混乱 - **宇宙天气预报**:通过月相追踪,为你的系统提供实时占星指引 - **确实能用**:通过 sched_ext 加载到 Linux 内核并调度真实的系统进程 - **真实的 BPF 集成**:使用 scx_rustland_core 框架进行内核与用户空间通信 - **动态时间切片**:根据占星优先级(100-1000)调整 CPU 时间 ## 占星调度规则 ### 行星领域 每颗行星掌管特定类型的系统任务: - **☀️ 太阳** (生命力):关键系统进程 (PID 1, init) - **🌙 月亮** (情绪):交互式任务 (shell, 编辑器, 终端) - **💬 水星** (沟通):网络和 I/O 任务 - **💖 金星** (和谐):桌面和 UI 进程 - **⚔️ 火星** (能量):CPU 密集型任务 (编译器, 视频编码) - **🎯 木星** (扩张):内存密集型应用 (数据库, 浏览器) - **⚙️ 土星** (结构):系统守护进程和内核线程 ### 元素效果 星座元素产生元素亲和与对立: **增益组合** (任务在相容元素下茁壮成长): - **🔥 火** (白羊座, 狮子座, 射手座, 蛇夫座*) × CPU 任务: 1.5 倍加成 - **🌬️ 风** (双子座, 天秤座, 水瓶座) × 网络任务: 1.5 倍加成 - **🌍 土** (金牛座, 处女座, 摩羯座) × 系统任务: 1.4 倍加成 - **💧 水** (巨蟹座, 天蝎座, 双鱼座) × 内存任务: 1.3 倍加成 **减益组合** (元素对立): - **💧 水** × CPU 任务: 0.6 倍 (水熄灭火) - **🌍 土** × 网络任务: 0.6 倍 (土阻挡风) - **🌬️ 风** × 系统任务: 0.7 倍 (风扰乱土的结构) - **🔥 火** × 内存任务: 0.7 倍 (火蒸发水) 所有其他组合为中性 (1.0 倍)。 *蛇夫座 (第 13 个星座) 可通过 `--ophiuchus` 标志启用,使用 IAU 星座边界。 ### 逆行效果 当行星处于逆行状态时,受其支配的任务将遭受 **50% 时间片惩罚**。逆行是通过比较每日行星位置来检测的 —— 当行星在黄道带上向后移动(黄经变化为负值)时,即为逆行。 主要逆行效果: - **水星逆行**:网络和交互式任务受损 - **火星逆行**:CPU 任务慢如蜗牛 - **金星逆行**:UI 变得不和谐 - **注意**:太阳和月亮永远不会逆行 ### 优先级公式 ``` final_priority = base_priority × planetary_influence × element_boost time_slice = min_slice + (base_slice - min_slice) × (priority / 1000) if retrograde: time_slice × 0.5 ``` **基础优先级:** - 关键 (PID 1): 1000 - 系统任务: 200 - 交互式任务: 150 - 桌面/UI: 120 - CPU/网络: 100 - 内存: 80 **行星影响 (当行星顺行时):** - 火象星座: 1.3 倍 - 风象星座: 1.2 倍 - 土象星座: 1.1 倍 - 水象星座: 1.0 倍 - 逆行: -1.0 (触发时间片惩罚) ## 安装 **注意:** 用户空间调度器需要 6.12 或更高版本的内核。 ``` cargo build --release ``` 如果你使用的是 NixOS,也可以像这样添加提供的 flake (需要 25.11+ 版本): ``` # Include this flake inputs.scx_horoscope.url = "github:zampierilucas/scx_horoscope"; ... # Include module outputs = { self, nixpkgs, scx_horoscope, ... }@inputs: { nixosConfigurations.myhost = nixpkgs.lib.nixosSystem { modules = [ scx_horoscope.nixosModules.default ]; }; }; ``` 然后在你的系统配置中添加: ``` services.scx_horoscope = { enable = true; # Add options as needed extraArgs = [ "--cosmic-weather" ]; }; ``` ## 使用方法 加载到内核作为 sched_ext 调度器**需要 root 权限**。 ### 运行调度器 ``` # 构建 cargo build --release # 使用 cosmic weather report 和详细输出运行 sudo target/release/scx_horoscope --cosmic-weather -v # 使用 debug decisions 运行以查看单个任务调度 sudo target/release/scx_horoscope --debug-decisions # 停止: 按 Ctrl+C 进行优雅关闭 ``` ### 命令行选项 **占星选项:** - `-w, --cosmic-weather` - 启动时显示行星位置和占星指引 - `-d, --debug-decisions` - 实时观察宇宙做出调度决策 - `--ophiuchus` - 使用包含蛇夫座的 13 星座系统 (IAU 星座边界) - `--no-retrograde` - 无聊模式 (禁用逆行混乱) - `-u, --update-interval ` - 每 N 秒更新行星位置 (默认: 60) **性能调优:** - `-s, --slice-us ` - 基础时间片时长 (默认: 5000) - `--slice-us-min ` - 最小时间片 (默认: 500) - `-v, --verbose` - 显示详细统计数据 运行 `--help` 查看所有选项。 ## 免责声明 此调度器 **100% 用于教育和娱乐目的**。虽然天文计算是真实的,调度器也确实能工作(它真的会加载到内核并调度任务!),但使用占星术来调度 CPU 任务是: - 科学上存疑的 - 宇宙层面上滑稽的 - 具备完整功能的,包含真实的逆行检测和月相调度 - 不推荐用于生产系统(但它能启动并稳定运行) - 非常适合会议演讲、黑客马拉松,并证明一切皆有可能 ## 许可证 GPL-2.0-only (按照 sched_ext 要求) ## 致谢 - **Norm** 提出了这个滑稽而绝妙的按星象调度的想法 - **sched_ext** 团队提供了令人惊叹的 BPF 调度器框架 - 宇宙,提供了无尽的娱乐 *"在太空中,没人能听见你调度。"* 来自人们的评论: - "你让它跑起来了,但代价是什么!"
标签:CPU时间片, CPU调度器, DNS解析, Hpfeeds, Linux内核, Linux工具, Rust, sched_ext, scx_rustland_core, 任务调度, 内核开发, 创意编程, 占星术, 可视化界面, 开源项目, 星座, 星象计算, 玄学编程, 端口探测, 系统优化, 系统调用, 网络流量审计, 行星位置, 趣味项目, 通知系统