作者hl4 (Minimi)
看板LinuxDev
标题[问题] 如何控制程式执行时间
时间Thu Oct 22 00:49:08 2015
我有一段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(),但是没有效果。
也有想过那些时间是不是刚好没有被执行到还是怎样,不过还没想到怎麽验证。
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.198.128
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1445446151.A.CD0.html
1F:→ leolarrel: 提供的资讯太少无法帮你隔空抓药,不过我能确定的是在 10/22 14:23
2F:→ leolarrel: linux的世界,串流的资料维护是串流装置跟串流驱动程式 10/22 14:24
3F:→ leolarrel: 该负责的事情,你解bug的重点不应是考虑执行时间 10/22 14:25
4F:→ hl4: 串流的驱动程式细节都被包装起来了 10/22 17:59
5F:→ leolarrel: 那就请负责驱动程式的厂商解bug,如果厂商不愿意解,就叫 10/22 18:58
6F:→ leolarrel: 你主管去施压,这已经是政治性问题不是技术问题了,因为 10/22 18:59
7F:→ leolarrel: 基本上你程式的逻辑大体上没有问题... 10/22 18:59