hashtable每個bucket一把鎖保護(hù)節(jié)點和索引,一把全局鎖保護(hù)LRU鏈表

鏈表由midpoint指針分為hot 和cold兩個子鏈表" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 行業(yè)動態(tài) > 3. 高性能騰訊云CSG技術(shù)背后細(xì)節(jié)

3. 高性能騰訊云CSG技術(shù)背后細(xì)節(jié)

時間:2022-03-09 05:27:01 | 來源:行業(yè)動態(tài)

時間:2022-03-09 05:27:01 來源:行業(yè)動態(tài)

CSG在實現(xiàn)的參考了這兩個方案的優(yōu)缺點,希望能夠在并發(fā)性能的和緩存的命中率之間到達(dá)平衡, 具體實現(xiàn)如下:

hashtable每個bucket一把鎖保護(hù)節(jié)點和索引,一把全局鎖保護(hù)LRU鏈表

鏈表由midpoint指針分為hot 和cold兩個子鏈表,默認(rèn)的節(jié)點數(shù)比例是 2:1



CSG也是通過midpoint把LRU鏈表劃分為hot 和cold兩個子鏈表來解決局部性差場景。鎖的優(yōu)化采用的是段鎖 全局鎖,對節(jié)點的訪問是先加段鎖訪問數(shù)據(jù),移動節(jié)點時才加全局鎖,把全局鎖的臨界區(qū)控制到了最小范圍。這樣即保證了LRU特性提升了緩存命中率而且鎖沖突也不嚴(yán)重, 實際測試4線程加全局鎖修改鏈表可以達(dá)到50w /s的并發(fā)滿足了需求。

如上圖所示我們實現(xiàn)的段鎖hashtable是對每一個bucket一把鎖,對hash到同一個bucekt的key加同一鎖,多線程并發(fā)鎖沖突小并發(fā)高。hash沖突時采用的鏈?zhǔn)經(jīng)_突處理, 當(dāng)load_factor 1.0時會自動進(jìn)行resize,保證key和 bucket鎖得比例小于1:1。

下圖是多線程情況下跟stl 中unordered_map 加全局鎖性能對比數(shù)據(jù),測試環(huán)境4 cpu 8G mem。





對比發(fā)現(xiàn)即使單線程性能也差不多10%的性能損耗,4線程下是unordered_map的兩倍以上, key越多鎖沖突越少并發(fā)性能也越好。

關(guān)鍵詞:技術(shù),細(xì)節(jié),性能

74
73
25
news

版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉