[问题] 如何控制程式执行时间

楼主: hl4 (Zec)   2015-10-22 00:49:08
我有一段c code大概是这样的架构:
while (1) {
select(fd); // 等待的是串流资料,时间内没有读取的话会漏失一笔资料
if (fd is triggerd) {
function1();
function2();
function3();
}
}
这时运作大致都是正常的,不会漏掉资料,loop一次大约3000us。
但是当我在function之间加了几个printf之后,就开始偶发性的漏失串流资料。
漏失资料的该次loop时间会暴增到300000us左右,但是其他次loop时间则很稳定。
而这暴增出来的时间会随机发生于三个function其中之一。
时间是用gettimeofday()来测量的。
从top观察到的结果来看,cpu和memory使用率都很低。
我有猜过是不是io buffer导致的,并试着加上fflush()和fsync(),但是没有效果。
也有想过那些时间是不是刚好没有被执行到还是怎样,不过还没想到怎么验证。
谢谢。
作者: leolarrel (真.粽子无双)   2015-10-22 14:23:00
提供的资讯太少无法帮你隔空抓药,不过我能确定的是在linux的世界,串流的资料维护是串流装置跟串流驱动程式该负责的事情,你解bug的重点不应是考虑执行时间
楼主: hl4 (Zec)   2015-10-22 17:59:00
串流的驱动程式细节都被包装起来了
作者: leolarrel (真.粽子无双)   2015-10-22 18:58:00
那就请负责驱动程式的厂商解bug,如果厂商不愿意解,就叫你主管去施压,这已经是政治性问题不是技术问题了,因为基本上你程式的逻辑大体上没有问题...

Links booklink

Contact Us: admin [ a t ] ucptt.com