[問題] 如何控制程式執行時間

作者: 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