# Kernel Enhance Kit 简介

## 功能介绍

Kernel Enhance Kit 为开发者提供内核增强能力，包括服务质量（QoS）调度、Purgeable Memory 管理和格物服务，帮助开发者优化应用性能、资源管理和用户体验。

* **QoS**：提供任务优先级调度能力，开发者可以根据任务的重要程度和与用户交互的关联程度，为任务设置不同的 QoS 等级，系统会根据 QoS 等级分配 CPU 时间和调度次序，优化应用响应速度和资源利用率。

* **Purgeable Memory**：提供可随时丢弃的内存管理机制，用于存放容易通过重新计算构建的数据。该机制在系统低内存时可以直接释放这些内存，用户访问时再重新构建，适用于存放大块且恢复代价较小的数据。

* **格物服务**：提供 QoS 感知的端侧推理加速和资源管理优化能力，针对端侧推理场景的内存资源受限、算力受限、对功耗敏感等挑战，提供动态按需加载资源、推理加速等功能，保障用户体验的同时实现高效推理。

## 基本概念

### QoS

QoS（Quality of Service）即服务质量，在 HarmonyOS 中主要指任务的优先调度属性。开发者可以利用 QoS 对要执行的工作进行分类，以指示其与用户交互的关联程度；系统则根据任务设置的 QoS 安排各任务的运行时间和运行次序。

HarmonyOS 系统定义了 6 个 QoS 等级，从低到高与用户交互的关联程度依次递增。表中的 QOS_* 为接口枚举项名称：

|QoS 等级|使用场景|负载特征|
|:-------------------|:------------------------|:--------------|
|QOS_BACKGROUND|后台且用户不可见任务，例如数据同步、备份。|任务完成需要几分钟甚至几小时。|
|QOS_UTILITY|不需要立即看到响应效果的任务，例如下载或导入数据。|任务完成需要几秒到几分钟。|
|QOS_DEFAULT|默认。|任务完成需要几秒钟。|
|QOS_USER_INITIATED|用户触发并且可见进展的任务，例如打开文档。|任务在几秒钟之内完成。|
|QOS_DEADLINE_REQUEST|越快越好的关键任务，如页面加载。|任务几乎是瞬间完成的。|
|QOS_USER_INTERACTIVE|用户交互任务（UI 线程、刷新界面、动效）。|任务是即时的。|

### Purgeable Memory

Purgeable Memory 指可以随时丢弃的内存区域，用于存放那些很容易通过重新计算构建出来的数据。该数据在系统低内存时可以被直接释放，用户访问的时候再重新构建。Purgeable Memory 适用于存放大块（至少 4KB）且恢复代价较小的数据，它在系统压力较大时优先回收（对匿名页采用类似文件页的 drop 形式，而不是压缩），再次使用时需要用户自己恢复数据再使用。

### 格物服务

格物服务是针对端侧推理场景的 QoS 感知推理加速和资源管理优化服务。端侧推理场景具有保障用户数据隐私、部署成本低、时延低、不受网络影响的高可用性等优点，但也面临着内存资源受限、算力受限、对功耗敏感等挑战。格物服务通过动态按需加载资源、QoS 感知调度等优化手段，在保障用户体验的同时实现高效推理。

## 功能效果

### QoS 优化效果

合理使用 QoS 可以显著提升应用性能：

* **线程执行优化**：通过为关键线程设置合适的 QoS 等级，可以减少线程等待时间，提高运行时间占比，减少被抢占的比例。

* **RN（React Native）框架优化**：在 RN 框架中合理标记关键线程的 QoS 等级后，开源 benchmark 测试的性能提升了约 13%。

### Purgeable Memory 优化效果

Purgeable Memory 在系统压力较大时优先回收，可以有效缓解内存压力：

* 适用于存放大块（至少 4KB）且恢复代价较小的数据
* 在系统低内存时直接释放，而不是压缩
* 再次使用时由用户重新构建数据

### 格物服务优化效果

格物服务针对端侧推理场景提供以下优化：

* **资源管理优化**：动态按需加载资源，避免资源浪费。
* **QoS 感知调度**：根据推理任务的重要程度进行调度，保障用户体验。
* **推理加速**：通过优化资源管理和调度，提升推理效率。

## 约束与限制

### QoS 使用限制

* QoS 接口只能设置当前任务的 QoS 等级，不能设置其他任务的 QoS 等级。

### Purgeable Memory 使用限制

* 适用于存放大块（至少 4KB）且恢复代价较小的数据。
* 再次使用时需要用户自己恢复数据再使用。

### 格物服务使用限制

* 格物服务从 API version 20 开始支持。
* 需要依赖相关的动态链接库：libqos.so。

## 相关文档

* [QoS 开发指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/qos-guidelines)
* [Purgeable Memory 开发指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/purgeable-memory-guidelines)
* [格物服务开发指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/gewu-ndk-api-guidelines)

## 模拟器支持情况

本Kit暂不支持模拟器。

