
# 调度统计
#### 功能说明
用于统计CPU的一些调度信息，包括idle任务启动时间、idle任务运行时长、调度切次数等。
#### 使用方法
1. 通过make menuconfig开启该调度统计功能，即配置LOSCFG_DEBUG_SCHED_STATISTICS=y，该功能默认关闭，菜单路径为：Debug ---\> Enable a Debug Version ---\> Enable Debug LiteOS Kernel Resource ---\> Enable Scheduler Statistics Debugging。
2. 将以下函数注册为Shell命令。Shell命令注册方法详见[新增命令开发流程](https://support.huaweicloud.com/maintenance-LiteOS/zh-cn_topic_0302395693.html#ZH-CN_TOPIC_0302395693__section13835461177)。
   
   OsShellStatisticsStart---调度统计功能开启函数。
   OsShellStatisticsStop---调度统计功能关闭函数。关闭后，会自动调用OsStatisticsShow输出调度统计信息。
   OsShellCmdDumpSched---显示CPU调度信息的函数。
   
   
3. 调度信息查看。 
   在Shell窗口中调用注册的命令。
   
   
 
#### 注意事项
先执行OsShellStatisticsStart对应的Shell命令，开启调度统计功能后，再查看调度信息。
#### 输出说明
图1调用OsShellStatisticsStop后输出   
![](https://support.huaweicloud.com/maintenance-LiteOS/zh-cn_image_0303471834.png)
图中的mpstop是OsShellStatisticsStop注册的Shell命令，仅用于举例，实际上系统中并不存在该命令。图中各输出项说明如下表所示：
|  Passed Time  |            调度功能运行时长            |
|---|---|
| CPU           | CPU名称                          |
| Idle(%)       | idle任务运行时长百分比                  |
| ContexSwitch  | 任务调度切换次数                       |
| HwiNum        | 中断触发次数                         |
| Avg Pri       | 切入任务不为idle任务的任务优先级平均值          |
| HiTask(%)     | 高优先级任务运行时长所占百分比，定义优先级小于16为高优先级 |
| HiTask SwiNum | 切入新任务为高优先级的切换次数，定义优先级小于16为高优先级 |
| HiTask P(ms)  | 高优先级任务运行的平均时长，定义优先级小于16为高优先级   |
| MP Hwi        | 核间中断触发次数，仅用于多核                 |
   
图2调用OsShellCmdDumpSched输出   
![](https://support.huaweicloud.com/maintenance-LiteOS/zh-cn_image_0303474606.png)
图中的mpstat是OsShellCmdDumpSched注册的Shell命令，仅用于举例，实际上系统中并不存在该命令。图中各输出项说明如下表所示：
|    Task    |      任务名称      |
|---|---|
| TID        | 任务ID           |
| Total Time | 所有CPU的任务运行时长   |
| Total CST  | 所有CPU任务上下文切换次数 |
| CPU        | CPU名称          |
| Time       | 单CPU的任务运行时长    |
| CST        | 单CPU的任务上下文切换次数 |
   
