SylixOS CPU 利用率统计机制

SylixOS CPU 利用率统计机制

SylixOS CPU 利用率统计基于 TCB 中的两个变量,TCB_ulCPUUsageTicks 和 TCB_ulCPUUsageKernelTicks。用于记录规定时间内的 CPU 使用 TICK 计数与 Kernel 使用计数。



top 命令首先清空所有的 TCB 的计数统计,然后开启统计数据更新,等待规定时间后(默认 1s)关闭统计数据更新。此时 TCB_ulCPUUsageTicks 与 TCB_ulCPUUsageKernelTicks 变量中就存放了这段时间内的所有线程的执行 TICK 计数。最后整理所有数据后打印出来。



统计数据在 TICK 中断中更新,即在 API_KernelTicksContext() 中。在每个 TICK 中断中会遍历所有的核,并在核当前的 TCB 的统计数据上加一个 TICK,实现统计数据更新。



从这个机制可以看出 CPU 利用率的统计仅是一个粗略的估算,在诸如高频周期执行的情况下可能出现较大的偏差。例如存在一个高优先级线程,周期等待中断信号量。中断 500us 触发一次,即此线程 500us 触发一次,每次执行占用 CPU 最大 200us 左右。可以看出此线程占用 CPU 不会超过 50%。但由于在 TICK 中断触发时只要此线程正在执行则直接加上 1 个 TICK 周期。因此可能出现统计结果远超 50% 的情况。

    • Related Articles

    • SylixOS 中 如何获取磁盘序列号和 CPU ID

      Q:SylixOS 中 如何获取磁盘序列号和 CPU ID ? 获取硬盘 ID 的函数,可以通过 open 打开磁盘设备,然后通过 ioctl 使用 LW_BLKD_CTRL_INFO 参数获取磁盘信息,磁盘信息里面就包含有磁盘 ID、CPU ID 可以通过 LW_CPU_GET_CUR_ID获取。 如果需要在应用程序里面 ioctl 使用 LW_BLKD_CTRL_INFO 参数获取磁盘信息,需要定义 LW_BLK_INFO ...
    • CPU 资源百分比查看及阻塞事件情况

      问:线程占用 CPU 资源百分比的运行情况在哪里查看?以及线程阻塞事件的具体情况? 答:可以通过SylixOS中的 top 或者 cpuus 指令查看线程占用CPU资源的运行情况。     如果要查看消息队列的动态情况,可以通过 SylixOS 中的 tp 指令查看线程阻塞事件的句柄。 如果阻塞的 STAT 状态为 msgq,则可以通过“msgq 句柄”查看阻塞消息队列的具体信息。 如果阻塞状态 STAT 为 sem,则可以通过“sem 句柄”查看阻塞信号事件的具体信息。
    • SylixOS 功能介绍及版本差异

      SylixOS功能介绍及版本差异 SylixOS 标准版 SylixOS 标准版是 SylixOS 的基础版本,具备如下功能: 兼容 IEEE 1003(ISO/IEC 9945)操作系统接口规范; 兼容 POSIX 1003.1b(ISO/IEC 9945-1)实时编程标准; 支持国军标 GJB7714-2012 操作系统接口规范; 优秀的实时性能(任务调度与切换算法时间复杂度为 O(1)); 支持无限多任务; 抢占式调度支持 256 个优先级; 支持虚拟进程; ...
    • SylixOS lite 版—基于 STM32F767 资源使用情况

      1、基本概念     代码段(text):顾名思义,代码存放的位置,在 STM32 中代码段一般存放于内置 FLASH 中; 已初始化数据段(data):已初始化数据段会分别体现在 FlASH 中和 RAM 中。因为是全局变量,运行过程中需要进行读写操作,因此占用一段 RAM 空间。又因为有初始值,其初始值需要占用 FlASH 空间。   未初始化的数据段(bss):bss 与 data 相同的地方时它也是全局变量,运行过程中需要进行读写操作,因此占用一段 RAM ...
    • error: xxx-sylixos-elf-lzocom.exe

      Q:IDE 在编译工程时出现:xxxx-sylixos-elf-lzocom.exe  应用程序出错。 应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。信息如下图所示。 安装 vc2010_redist_x86.exe 即可解决此问题, 此文件在 IDE 软件安装包的 Tools 目录下(如 SylixOS IDE 3.9.11_professional\Tools) 。