# 功率配置文件

可以使用可配置的功率配置文件来调整相机性能。选择正确的配置文件取决于您是需要原始神经网络推理吞吐量还是CPU余量。

调整功率配置在相机因长时间使用可能导致热降频而变慢的情况下尤其有用。它允许您选择优先或牺牲哪个组件——是CPU还是神经网络。

只有OAK-4系列相机支持功率配置文件选择。

## 可用的功率配置文件及其特性

1. best_effort

 * 平衡NN和CPU任务，表现良好

 * 产生较高的推理帧率

 * 在大多数情况下，CPU性能也比sustained_nn_heavy更高

2. sustained_nn_heavy

 * 优先保证每秒一致的NN推理次数

 * 通常产生最高的帧率

 * 代价是CPU效率降低，在压力下会明显下降

3. sustained_cpu_heavy

 * 帧率最低，尤其是对于NN密集型任务

 * 作为交换，提供出色的CPU效率，适用于CPU密集型或多任务应用

## 设置功率配置文件

通过SSH连接到相机后，使用agentconfd切换功率配置文件：

```bash
agentconfd power-switch --profile best_effort
```

将best_effort替换为任何受支持的配置文件。

## 功率配置文件基准测试

我们对五种神经网络在三种可用的功率配置文件下进行了基准测试，以了解推理速度和CPU效率如何受到影响——同时在后台使用stress-ng工具以100%的压力加载CPU，模拟高负载场景。

### 基准测试结果（满CPU负载下）

| 模型 | best_effort 帧率 vs Bogo运算/秒 | sustained_cpu_heavy 帧率 vs Bogo运算/秒 | sustained_nn_heavy 帧率 vs Bogo运算/秒 |
| --- | --- | --- | --- |
| yolov8-instance-segmentation-large | 149.17fps 119.62ops/s | 57.83fps 119.41ops/s | 150.62fps 57.5ops/s |
| yolov10-nano | 657.06fps 85.75ops/s | 238.3fps 118.88ops/s | 655.44fps 58.86ops/s |
| yolo-world-l | 71.82fps 90.59ops/s | 27.57fps 119.09ops/s | 74.56fps 50.58ops/s |
| scrfd-face-detection | 380.85fps 89.02ops/s | 131.42fps 119.7ops/s | 381.94fps 49.46ops/s |
| yolov8-large-pose-estimation | 171.96fps 92.96ops/s | 65.36fps 119.36ops/s | 173.06fps 52.76ops/s |

### “Bogo运算/秒 (usr+sys)”测量的是什么？

它给出了每秒执行的CPU操作数量的一个估算值。计算公式为：

bogo运算/秒 = 总bogo运算 / (用户时间 + 系统时间)

 * 值越高 = CPU执行效率越高

 * 通过 [stress-ng](https://wiki.ubuntu.com/Kernel/Reference/stress-ng) 测量

 * 用于比较功率配置文件对CPU资源施加的压力大小

### 测量精度

 * 帧率（Frames Per Second） 值使用modelconverter benchmark工具收集，存在大约±10%的误差范围。

 * CPU效率（bogo运算/秒） 使用stress-ng在用户+系统时间下的输出进行测量。但重要的是，这些数字仅作为观察参考，并非精确的性能指标。

stress-ng文档的免责声明：

“请注意，这些并不是可靠性能或吞吐量的度量标准，也从未设计用于任何形式的基准测试。这些指标只是在各种负载下观察系统行为的一种有用方式。”

### 复现基准测试

完整的基准测试复现指南可在[这篇博客文章](https://discuss.luxonis.com/blog/6342-power-profiles-benchmark)中找到。
