vxworks环境下的CPU\内存\任务\异常 监控
2013-03-19 16:25
1376 查看
任务运行状态监控
任务运行时的状态信息主要包括任务名、任务状态、当前占用CPU的比率、任务优先级等。VxWorks的Spy工具利用辅助时钟的中断服务程序,在指定的统计周期内,统计应用任务、Interrupt、Kernel、Idle状态等所获得的ticks总数,以此分别统计它们的CPU占用率。VxWorks的spyLib函数库提供了对任务名、ID、优先级等任务属性信息以及CPU空闲率信息进行监控的函数接口[3]。其中,spy()函数默认将这些信息在标准输出STD_OUT打印,可以通过任务级的输出重定向将此类信息保存到指定的文件中。此外,VxWorks5.5内核的spyReportCommon(FUNCPTR printRtn) 函数在执行过程中针对每一个任务分别调用printRtn函数,将任务的各项属性值赋给printRtn函数的参数。系统基于此设计了taskInfoSave()函数代替printRtn作为spyReportCommon()的参数,在taskInfoSave()中将任务的各项属性值保存到任务属性结构体taskInfoNode中,并将各任务的任务属性结构体组成链表,从而实现了对任务运行状态的监控。保存任务信息的结构体taskInfoNode列出如下:
struct taskInfoNode
{
char name[15]; /*任务名*/
int status; /*任务状态*/
int ID; /*任务ID*/
int priority; /*优先级*/
int cpu; /*cpu占用率*/
struct taskInfoNode *next;
}
1.1.3 资源状况监控
分布式嵌入式系统的资源状况信息是指节点正常工作状态下的CPU运行情况信息和内存使用状况信息。VxWorks操作系统提供了对CPU占用率和内存使用状况进行监控的接口。其中,CPU占用率信息可以在任务运行状态监控部分的taskInfoSave()函数中处理得到;当前可用内存信息、最大分配内存信息、内存占用率信息可以通过调用memShow()函数获取,由于memShow()默认将内存信息打印到标准输出,因此获取内存信息的一种较为直观的方式就是通过将memShow()的打印信息输出重定向至指定的文件,然后从中提取系统需要的内存信息。除此之外,VxWorks5.5内核中的内存分区结构体mem_part提供了内存分区信息,在程序中通过系统内存分区(ID为memSysPartId)引用该结构体的数据可以实时得到有关内存资源的信息,如调用memSysPartId->curWordsAllocated得到当前分配内存的字数。除此之外,mem_part结构体中与资源状况监控相关的信息还包括分区中内存总字数totalWords、内存累计分配字数cumWordsAllocated等。
1.1.4 异常监控
VxWorks为用户提供了较为完备的异常处理机制。对于与体系结构相关的异常处理,可以使用VxWorks提供的接口函数来替换异常处理程序,直接获取异常硬件上下文;对于通用的异常处理,VxWorks 提供了处理异常的通用初始化工具库,用来捕获和报告由程序错误产生的异常[4]。VxWorks的excLib库提供了excHookAdd()函数接口,用于将用户指定的异常处理钩子函数绑定到系统的异常处理流程中,当发生异常时由系统自动调用该函数。
任务运行时的状态信息主要包括任务名、任务状态、当前占用CPU的比率、任务优先级等。VxWorks的Spy工具利用辅助时钟的中断服务程序,在指定的统计周期内,统计应用任务、Interrupt、Kernel、Idle状态等所获得的ticks总数,以此分别统计它们的CPU占用率。VxWorks的spyLib函数库提供了对任务名、ID、优先级等任务属性信息以及CPU空闲率信息进行监控的函数接口[3]。其中,spy()函数默认将这些信息在标准输出STD_OUT打印,可以通过任务级的输出重定向将此类信息保存到指定的文件中。此外,VxWorks5.5内核的spyReportCommon(FUNCPTR printRtn) 函数在执行过程中针对每一个任务分别调用printRtn函数,将任务的各项属性值赋给printRtn函数的参数。系统基于此设计了taskInfoSave()函数代替printRtn作为spyReportCommon()的参数,在taskInfoSave()中将任务的各项属性值保存到任务属性结构体taskInfoNode中,并将各任务的任务属性结构体组成链表,从而实现了对任务运行状态的监控。保存任务信息的结构体taskInfoNode列出如下:
struct taskInfoNode
{
char name[15]; /*任务名*/
int status; /*任务状态*/
int ID; /*任务ID*/
int priority; /*优先级*/
int cpu; /*cpu占用率*/
struct taskInfoNode *next;
}
1.1.3 资源状况监控
分布式嵌入式系统的资源状况信息是指节点正常工作状态下的CPU运行情况信息和内存使用状况信息。VxWorks操作系统提供了对CPU占用率和内存使用状况进行监控的接口。其中,CPU占用率信息可以在任务运行状态监控部分的taskInfoSave()函数中处理得到;当前可用内存信息、最大分配内存信息、内存占用率信息可以通过调用memShow()函数获取,由于memShow()默认将内存信息打印到标准输出,因此获取内存信息的一种较为直观的方式就是通过将memShow()的打印信息输出重定向至指定的文件,然后从中提取系统需要的内存信息。除此之外,VxWorks5.5内核中的内存分区结构体mem_part提供了内存分区信息,在程序中通过系统内存分区(ID为memSysPartId)引用该结构体的数据可以实时得到有关内存资源的信息,如调用memSysPartId->curWordsAllocated得到当前分配内存的字数。除此之外,mem_part结构体中与资源状况监控相关的信息还包括分区中内存总字数totalWords、内存累计分配字数cumWordsAllocated等。
1.1.4 异常监控
VxWorks为用户提供了较为完备的异常处理机制。对于与体系结构相关的异常处理,可以使用VxWorks提供的接口函数来替换异常处理程序,直接获取异常硬件上下文;对于通用的异常处理,VxWorks 提供了处理异常的通用初始化工具库,用来捕获和报告由程序错误产生的异常[4]。VxWorks的excLib库提供了excHookAdd()函数接口,用于将用户指定的异常处理钩子函数绑定到系统的异常处理流程中,当发生异常时由系统自动调用该函数。
相关文章推荐
- Linux 环境下监控进程内存和CPU的使用率
- 基于nagios的监控环境(四):第三方插件监控流量、CPU、内存、进程
- Ubuntu16.04下实时监控CPU/GPU内存的使用情况
- linux系统CPU,内存,磁盘,网络流量监控脚本
- python利用WMI等监控获取windows状态如CPU、内存、硬盘等信息
- Linux 系统CPU,内存,负载,IO监控脚本
- VxWorks任务编程中常见异常分析
- linux系统的负载与CPU、内存、硬盘、用户数监控shell脚本
- Python功能模块之psutil------ Linux性能(CPU、磁盘、内存、网卡)监控
- tomcat 在eclipse环境中,启动后内存异常解决办法 (PermGen space)
- shell脚本监控系统负载、CPU和内存使用情况
- shell脚本监控系统负载、CPU和内存使用情况
- psutil监控CPU内存磁盘并告警
- grafana+influxdb+python实现监控cpu、内存
- Shell脚本监控CPU、内存和硬盘利用率
- zabbix监控LINUX下CPU,硬盘,流量,内存
- 使用psutil库监控linux的系统资源和自定义进程的cpu 内存占用。
- Python 利用WMI监控windows状态如CPU、内存、硬盘
- 监控某进程内存占用异常
- 使用CACTI监控H3C设备的CPU和内存使用率