# Kernel Enhance Kit 简介

#### 功能介绍

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

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

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

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

#### 基本概念

#### QoS

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

HarmonyOS 系统定义了 6 个 QoS 等级，从高到低与用户交互的关联程度依次递减：  

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

#### Purgeable Memory

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

#### 格物（Gewu）服务

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

#### 功能效果

#### QoS 优化效果

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

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

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

#### Purgeable Memory 优化效果

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

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

#### 格物服务优化效果

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

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

#### 约束与限制

#### QoS 使用限制

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

#### Purgeable Memory 使用限制

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

#### 格物服务使用限制

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

#### 相关文档

* [QoS 开发指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/qos-guidelines)
* [Purgeable 内存开发指导](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)  
