#!/bin/bash
# 文件名：cpu_boost.sh
# 功能：临时提升CPU频率（设置为performance模式）
# 注意：需root权限，可能增加功耗和温度


# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
    echo "错误：请使用root权限运行（sudo ./cpu_boost.sh）" >&2
    exit 1
fi

# 检查系统是否支持cpufreq（CPU频率调节）
check_cpufreq_support() {
    local cpu0_path="/sys/devices/system/cpu/cpu0/cpufreq"
    if [ ! -d "$cpu0_path" ]; then
        echo "错误：系统不支持cpufreq，无法调节CPU频率" >&2
        exit 1
    fi
}

# 提升所有CPU核心频率（设置为performance模式）
boost_cpu_frequency() {
    echo "===== 开始提升CPU频率 ====="
    # 遍历所有CPU核心（cpu0, cpu1, ...）
    for cpu_dir in /sys/devices/system/cpu/cpu[0-9]*; do
        # 提取CPU核心编号（如cpu0 -> 0）
        cpu=$(basename "$cpu_dir" | sed 's/cpu//')
        # 调控器配置路径
        governor_path="$cpu_dir/cpufreq/scaling_governor"
        
        # 检查调控器文件是否存在
        if [ -f "$governor_path" ]; then
            # 设置为performance模式（最高性能）
            echo "performance" > "$governor_path"
            # 验证设置是否成功
            current_governor=$(cat "$governor_path")
            if [ "$current_governor" = "performance" ]; then
                echo "CPU核心 $cpu 已设置为最高性能模式"
            else
                echo "警告：CPU核心 $cpu 设置失败，当前模式：$current_governor" >&2
            fi
        else
            echo "警告：未找到CPU核心 $cpu 的调控器配置，跳过" >&2
        fi
    done
    echo "===== CPU频率提升操作完成 ====="
    echo "提示：完成高性能任务后，建议执行以下命令恢复节能模式："
    echo "sudo sh -c 'for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo powersave > \$f; done'"
}


# 主流程
main() {
    check_cpufreq_support
    boost_cpu_frequency
}

main