在解決某個服務端程式問題時,有些資料需要做些即時的儲存。當時採取了直接寫檔案的方式。經過大量的實際使用後發現,直接在磁碟寫檔案在使用者量大的時候,很容易碰到磁碟io繁忙的問題。考慮通過在記憶體中建立乙個tmpfs的方式來平滑磁碟io需求。
流程簡述:
memory -> tmpfs -> disk
其中 tmpfs也是在記憶體裡面的,所以由memory->tmpfs其實就是乙個類似memory的copy過程,但實際比memory copy需要更多的時間。
tmpfs->disk採取定期同步機制。這樣就可以平滑掉很大比例的寫檔案操作了。
實際測試:
條件:10000次迴圈,每次分別寫入256,512,1024,4096,102400這5種大小的資料內容。
memory->tmpfs 耗時:45秒
memory->disk 耗時:143秒
採用memory -> tmpfs -> disk機制
在每隔10次memory->tmpfs寫操作之後,寫一次tmpfs->disk機制,耗時130秒
在每隔20次memory->tmpfs寫操作之後,寫一次tmpfs->disk機制,耗時89秒
主要的同步語句:
1. remove null file
find src_location -type f -empty -print -exec rm {} /;
2. sync tmpfs to disk
find src_location -type f -newer flag_file -print -exec cp {} dest_location /;
Qt用演算法畫平滑曲線(cubicTo)
qt 中可以使用 qpainterpath cubicto 函式繪製如下的平滑曲線 函式原型 void qpainterpath cubicto const qpointf c1,const qpointf c2,const qpointf endpoint 使用c1和c2指定的控制點在當前位置和給...
C 小知識 用 i替代i
靜態 分析工具可簡化編碼過程,檢測出錯誤並幫助修復。pvs studio 是乙個用於 c c 的靜態 分析工具。該團隊檢測了 200 多個 c c 開源專案,包括了 unreal engine php haiku qt 和 linux 核心等知名專案。於是他們每天分享乙個錯誤案例,並給出相應建議。這...
用java位元組碼解釋i 和 i
原址 先看4個題目 int i 0 i i int i 0 i i int i 0 int j 0 j i i int i 0 int j 0 j i i i 每道題裡的i和j都是多少?用myeclipse測試,結果分別是 i 0,i 1,i 2,j 1,i 3,j 3。i 和 i的問題,困擾很多人...