1# resourceschedule_qos_manager
2
3## 简介<a name="section_introduction"></a>
4
5权限管控服务目前服务于并发编程框架FFRT,为特定的线程提供调用底层Qos和RTG接口的能力。服务接收全局资源调度管控子系统中的帧感知调度插件发送的场景信息,为系统服务uid与前台app的uid赋予调用底层对应接口的权限。同时将多级Qos的配置信息下发到内核,为而为并发编程框架FFRT提供支撑。
6
7## 目录<a name="section_catalogue"></a>
8
9```
10//foundation/resourceschedule/qos_manager
11├── etc
12│   └── init                                # 权限管控服务配置文件
13|
14├── sa_profile                              # 权限管控服务xml
15├── include                                 # 部件通用工具类
16│   └── concurrent_task_log.h               # 封装hilog,用于日志打印
1718├── interfaces/inner_api
19│   └── concurrent_task_client.h            # 部件间调用接口
20|
21├── frameworks
22│   └── concurrent_task_client              # 服务client端
23|
24├── services                                # 服务service端
2526└── test                                    # 自测试用例目录
27```
28
29
30## 框架<a name="section_frameworks"></a>
31
32权限管控服务根据其对接的内核功能模块,主要可以分为两个部分。即RTG权限管控与分组管理、多级QoS权限管控与信息下发。
33
34- **RTG权限管控与分组管理**:主要分为基于uid的RTG权限管控模块、RTG分组管理模块。其中:
35
36  基于uid的RTG权限管控模块,主要接收帧感知调度发送的场景信息,基于这些消息,将一些特权uid、以及切换到前台的app对应的uid赋予RTG操作权限,使拥有这些uid的线程可以对RTG分组执行特定操作。
37
38  RTG分组管理模块,统一管理RTG分组,为并发编程框架目前对接的外部场景用到的RTG分组执行创建、销毁等操作。
39
40- **多级QoS权限管控与信息下发**:主要分为基于uid的QoS权限管控模块、多级QoS信息下发模块。其中:
41
42  基于uid的QoS权限管控模块,和RTG权限管控模块类似,主要接收帧感知调度发送的场景信息,基于这些消息,将一些特权uid、以及切换到前台的app对应的uid赋予设置QoS等级的权限。
43
44  多级QoS信息下发模块,将不同场景下的不同QoS等级对应的nice、uclamp等参数下发到内核,为线程的QoS等级设置服务。
45
46两个部分中的权限管控模块,统筹了权限管控服务所需要的外部事件,并根据事件类型下发对应的参数和权限,和并发编程框架相互合作,共同保障系统的性能供给。
47
48## 使用说明<a name="section_instructions"></a>
49
50系统开发者可以通过配置productdefine/common/products下的产品定义json文件,增加或移除本部件,来启用或停用本部件:
51
52```
53"qos_manager:concurrent_task_client":{}
54```
55
56## 相关仓<a name="section_related_repositories"></a>
57
58- [resource_schedule_service](https://gitee.com/openharmony/resourceschedule_resource_schedule_service)
59- [frame_aware_sched](https://gitee.com/openharmony/frame_aware_sched)
60- **resourceschedule_qos_manager**
61
62
63
64
65
66
67
68