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

看板LinuxDev作者 (Minimi)時間9年前 (2015/10/22 00:49), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
我有一段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://www.ptt.cc/bbs/LinuxDev/M.1445446151.A.CD0.html

10/22 14:23, , 1F
提供的資訊太少無法幫你隔空抓藥,不過我能確定的是在
10/22 14:23, 1F

10/22 14:24, , 2F
linux的世界,串流的資料維護是串流裝置跟串流驅動程式
10/22 14:24, 2F

10/22 14:25, , 3F
該負責的事情,你解bug的重點不應是考慮執行時間
10/22 14:25, 3F

10/22 17:59, , 4F
串流的驅動程式細節都被包裝起來了
10/22 17:59, 4F

10/22 18:58, , 5F
那就請負責驅動程式的廠商解bug,如果廠商不願意解,就叫
10/22 18:58, 5F

10/22 18:59, , 6F
你主管去施壓,這已經是政治性問題不是技術問題了,因為
10/22 18:59, 6F

10/22 18:59, , 7F
基本上你程式的邏輯大體上沒有問題...
10/22 18:59, 7F
文章代碼(AID): #1M9y87pG (LinuxDev)
文章代碼(AID): #1M9y87pG (LinuxDev)