## UKUI Perf Controller

<!-- logo-->
<div align="center">
<img src="./logo.png" width="200" height="200" alt="ukui-perf-controller"/>
</div>

### 介绍

UKUI Perf Controller 是一款专为 UKUI 桌面环境设计的轻量级系统CPU性能调节应用，旨在为用户提供一个直观、易用的系统性能调节工具。通过该应用，用户可以根据需要调整系统性能参数，以优化用户体验，目前正处于积极开发阶段！

<div align="center">
<img src="./Screenshot.png" width="400" alt="ukui-perf-controller"/>
</div>

### 安装和运行

授权功能依赖于polkit，请确保系统已安装polkit。

**如果要控制风扇请使用root权限运行，否则无法控制。**

```bash
su
./ukui-perf-controller
```


### TODO

以下是计划和正在实现的功能，欢迎在issue中提出你的想法和建议！

- [x] 设置CPU超线程
- [x] 设置CPU睿频
- [x] 设置CPU频率
- [ ] 设置CPU调度策略
- [ ] 设置CPU核心开关
- [x] 获取PWM散热风扇
- [x] 获取CPU温度
- [x] CPU风扇调度曲线


### 编译

终端执行：

```bash
mkdir build
cd build
cmake ..
make
```
安装：
```bash
sudo make install
```

Qt Creator：

打开工程，并配置构建套件


### 打包

选择分支：
```bash
git checkout -b openKylin/nile  # openKylin 2.0 (nile)，根据实际情况选择分支
```

编译打包：
```bash
debuild
```

清理：

```bash
debuild -T clean
```

## 使用方法

> **使用前必读**    
> 本工具涉及调节系统CPU性能参数，操作不当可能导致系统不稳定，极端情况甚至导致系统崩溃，请了解相关操作的风险后再谨慎使用，如造成系统或硬件损坏，本工具及其开发者不承担任何责任。


**操作不谨慎，系统两行泪。**



### 关于CPU频率设置的特别说明

查看CPU频率设置是否生效：

```bash
watch -n 0.5 "cat /proc/cpuinfo | grep -i 'MHz'"
```


> **注意**  
> 部分OEM厂商的CPU可用频率范围可能有限制，默认的CPU调度模块也可能影响CPU频率设置，由于以上部分属于修改内核模块的操作，本工具不提供相关功能，请自行查阅相关资料进行设置。

查看CPU可用频率范围
```bash
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
```

### 关于散热风扇调节的特别说明

一些OEM笔记本需要安装对应的驱动程序才能使用风扇调节功能，比如Dell笔记本需要安装Dell SMM驱动程序，具体安装方法请参考OEM厂商的官方文档。

可以通过以下命令获取主板的传感器以及pwm控制芯片或驱动的名称：
```bash
cat /sys/class/hwmon/hwmon2/name 
dell_smm
```

大部分台式机主板使用Nuvoton的控制芯片，型号可能是 `nctXXXX`，可以参考主板说明书，或者使用以下命令查看：
```bash
lspci | grep -i nct
```

需要启用`sudo modprobe nct6775` （具体型号根据实际情况）

如果芯片型号不明确可以先尝试启用nct6775驱动（大部分兼容），然后使用以下命令查看：

```bash
sudo modprobe nct6799  # 启用nct6775驱动，具体型号根据实际情况
```

```bash
cat /sys/class/hwmon/hwmon3/name
```

实测6799可以使用6775驱动代替

```
modprobe: FATAL: Module nct6799 not found in directory /lib/modules/6.6.0-15-generic
```
一般台式机主板的pwm风扇有如下控制参数：

```bash
/sys/class/hwmon/hwmon3
```

```bash
pwm1                      pwm1_auto_point4_temp     pwm1_step_down_time
pwm1_auto_point1_pwm      pwm1_auto_point5_pwm      pwm1_step_up_time
pwm1_auto_point1_temp     pwm1_auto_point5_temp     pwm1_stop_time
pwm1_auto_point2_pwm      pwm1_crit_temp_tolerance  pwm1_target_temp
pwm1_auto_point2_temp     pwm1_enable               pwm1_temp_sel
pwm1_auto_point3_pwm      pwm1_floor                pwm1_temp_tolerance
pwm1_auto_point3_temp     pwm1_mode                 
pwm1_auto_point4_pwm      pwm1_start     
```
如果没有这些参数，请检查是否正确加载了驱动，或者主板是否支持pwm风扇调速。


该程序会自动将pwmX_enable设置为1，手动控制，如果在运行时修改了pwmX_enable为0或者其他值，将无法设置风扇转速。

由于手头设备有限，如果遇到特殊型号的主板，请提交issue和pull request适配！

### 兼容性

#### 支持的Linux发行版

- openKylin 2.0 (nile) 
- openKylin 3.0 (huanghe)
- 银河麒麟 V10 SP1 2503/V10 SP1 2403
- Ubuntu Kylin

#### 支持的CPU架构

- x86_64 (AMD/Intel/海光/兆芯 64位)

- riscv64

- arm64/aarch64 (飞腾/瑞芯微等)

如果您不清楚自己的CPU架构，可以通过以下命令查看：

```
uname -m 
```

#### 已验证的PWM风扇调速设备  

> **提示**  
> **未列出的设备仍可能兼容**，本列表仅收录关键测试设备  
> 如您设备未兼容请**提交Issue**（附设备详细型号）  
> 如该设备已验证兼容性**欢迎PR贡献**  

---

#### 台式机主板  
| 品牌       | 型号                 | 平台细节          |  
|------------|----------------------|-------------------|  
| **ASUS**   | B650M                | AMD AM5 主板      |  
| *(待补充)* |                      |                   |  

#### 笔记本  
| 品牌     | 系列        |       备注         |  
|----------|-------------|--------------------|  
| **Dell** | G 系列      |     依赖Dell SMM   |  
| *(待补充)* |             |                    |  

#### 开发板/嵌入式设备  
| 类型       | 型号               | 备注              |  
|------------|--------------------|-------------------|  
| *待补充*   |                    |                   |  


### 开发

请将PR提交到 `master` 分支

### 维护者

- [DSOE1024 - computerlub@163.com](https://gitee.com/DSOE1024)

### LICENSE

本项目遵循 GPLv3 开源协议，请详见 LICENSE 文件。



