前辈们,怎么查看linux系统平台的设备为什么在一个时间段内,突然之间有一个两秒的间隔,就是有两条log信息,这两条log信息是紧挨着输出的,中间没有其他任何的log信息,但是通过查看这两条log信息的时间戳,时间戳显示两条log信息的输出时间间隔竟然是2秒,这两秒的间隔不知道是怎么产生的,中间没有任何log信息输出,不知道系统和CPU到底在这两秒时间内做了什么,通过在系统平台上创建一个级别非常高的task,然后每个10毫秒输出一条log信息,这样看看能否看到2秒内是否可以输出这条log信息,发现这样做没有人任何的作用,两条时间间隔2秒的log信息之间,还是没有任何的其他的log信息,前辈们有什么方法能够指点一下晚辈看看怎么才能知道2秒内系统或者CPU到底在做什么?
晚辈非常感谢,这个问题已经困扰四天了。

解决方案 »

  1.   

    抱歉,问题是这样的:
    1.是一个打印设备,系统是linux系统
    2.做一个复印的任务。
    3.需要量测复印任务从开始到结束的耗费的时间。
    4.比如规定的时间是6s完成整个任务流程。
    5.通过分析任务输出的log信息,发现时间是8.5s,没有达到规定的要求。
    6.然后分析log发现,有两行log信息是挨着输出的,两行中间没有任何其他的log信息,但是两条log信息的时间戳却是间隔2.2s。
    7.整个任务的过程中,会有三个进程进行交互,是一个主进程进行初始化,然后通过system函数创建其他两个进程,通过system创建的两个进程会把大约200M的数据通过块内存和callback的形式循环传递给主进程。
    8.通过system函数创建的两个进程在把产生的数据传递完成后,就会结束自己任务,但是在结束的过程中会出现系统有2.2s的时间任何反应都没有的现象发生。
    9.进程内部有通过信号量的方式进程临界区的保护,但是进程与进程之间的交互是通过发送message的方式进行通知的。
    10.关于目前不同模块之间的进程通信方式不是很清楚,因为封闭和保密性太强。
    11.以上就是流程和现象,现在的问题是,不知道如何debug出2.2s内系统到底在干什么。目前怀疑是进程之间的通信问题和system函数创建的进程方式导致的,但是不知道该用何种手段进行debug定位。
    非常感谢!