Friday, June 18, 2010

提升Echeneidae IDS 同步處理效能

一個星期以來,我不斷著力於提升關於同步存取的效能問題,它是蠻大的一個Delay部分

放棄了標準的 Mutex鎖住資源方法(取得Mutex,把其他的Process都停下來),改用InterlockedXXX系列API搭配巧妙的設計來解決這個令人頭痛的問題(能改善效能的原因,我在Windows API Mutex 與 Yourself SpinLock中有說明)


在經過不斷的思考後(大部分時間都是邊休閒邊思考),今天在一個下午的小憩時終於想出了所有問題的解決方法,並且順利的實作出來

其中除了用到了InterlockedXXX以外,還使用了CPU內建的同步機制(同一塊記憶體,Read&Write 不會衝突,http://developer.intel.com/Assets/PDF/manual/253668.pdf的第八章節有清楚的提及,希望AMD CPU也有相同設計)來減少API的呼叫,加快速度
幸運的,僅經過一次Bug的修改,Program便順利的運作了,在壓力測試下也有不錯的表現

P4 3.2G  200KB\s下載流量下有穩定的表現


No comments:

Post a Comment