我正在使用4.4.12-rt19 RTLinux內核補丁。如何在實時Linux應用程序中記錄數據?
我有寫在C,其具有在數據取從網絡中,計算分離芯上的數據,然後把結果存入運行單獨的處理的實時應用。我正在嘗試登錄每個ms數據記錄10KB的順序。
測井過程可以訪問所有在共享存儲器中的輸入數據的。現在,我正在使用sqlite3和sqlite3async將數據庫緩存到記錄過程的一個線程中的內存中,然後通過調用sqlite3async_run()將內存中的實例提交到文件中。
問題是在部分sqlite3async_run()執行期間,寫入內存數據庫緩衝區的sqlite3_step()命令掛起並違反了我的1ms時間保證。
我不知道如果錯誤是因爲線程進程中,因爲如何sqlite3async作品的實時環境或工作方式發生。據我所知,sqlite3async應該能夠使用sqlite3虛擬文件系統在內存中緩衝數據庫,然後用後臺線程處理實際的文件寫入(詳見here)。我試圖改變每個線程的調度優先級和好處無濟於事。
任何幫助或建議將不勝感激!
WAL模式似乎過於緩慢,所以我設置日誌模式MEMORY這是速度不夠快。我的應用程序沒有問題,沒有將日誌寫入每次提交時的文件。謝謝您的幫助! – Sabar