<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    xmemcached 0.60 優(yōu)化過程

    Posted on 2009-03-06 14:37 dennis 閱讀(1498) 評論(2)  編輯  收藏 所屬分類: java涂鴉

       充分利用jprofile等工具觀察性能瓶頸,才能對癥下藥,盲目的優(yōu)化只是在浪費時間,并且效果可能恰恰相反
    1、 觀察到CountDownLatch.await占據(jù)最多CPU時間,一開始認為是由于jprofiler帶來的影響,導(dǎo)致這個方法調(diào)用時間過長,從而忽 略了這一點,導(dǎo)致后面走了不少彎路。實際上await方法占用50%的CPU,而網(wǎng)絡(luò)層和序列化開銷卻比較低,這恰恰說明這兩者的效率低下,沒辦法充分利 用CPU時間,后來觀察spymemcached的CPU占用情況,await占用的時間低于30%,優(yōu)化后的結(jié)果也是如此。

    2、因為沒有深入理解這一點,我就盲目地開始優(yōu)化,先從優(yōu)化協(xié)議匹配算法開始,匹配ByteBuffer一開始用簡單匹配(O(m*n)復(fù)雜 度),后來替代以KMP算法做匹配,想當(dāng)然以為會更快,比較了兩者效率之后才發(fā)現(xiàn)KMP的實現(xiàn)竟然比簡單匹配慢了很多,馬上google,得知比之kmp 算法效率高上幾倍的有BM算法,馬上實現(xiàn)之,果然比KMP和簡單匹配都快。換了算法后,一測試,有提升,但很少,顯然這不是熱點。然后開始嘗試改線程模型并測試,一開始想的是往上加線程,畢竟序列化是計算密集型,搞cpu個數(shù)的線程去發(fā)送command,調(diào)整讀Buffer的線程數(shù),測試效率沒有提升甚至 有所降低,期間還測試了將協(xié)議處理改成批處理模式等,全部以失敗告終。

    3、此時才想起應(yīng)該觀察下spymemcached的CPU使用情況,才有了上面1點提到的觀察,記的在測試yanf4j的echo server的時候,我發(fā)現(xiàn)讀Buffer線程數(shù)設(shè)為0的事情下比之1的效率更高,也就是說僅啟動一個線程處理Select、OP_WRITE和 OP_READ的事件,對于echo這樣簡單的任務(wù)來說是非常高效的,難道m(xù)emcached也如此?立馬設(shè)置為0并測試,果然提升很多,與 spymemcached的TPS差距一下減小了2000多,進一步觀察,由于xmemcached構(gòu)建在yanf4j的基礎(chǔ)上,為了分層清晰導(dǎo)致在發(fā)送 和接收消息環(huán)節(jié)有很多冗余的操作,并且我還多啟動了一個線程做command發(fā)送和優(yōu)化get、set操作,如果能磨平這些差異,擴展yanf4j,避免了隊列同步開銷,這樣也不用額外啟動線程,效率是否更高呢?得益于yanf4j的模塊化,修改工作順利進行,最后的測試結(jié)果也證明了我的猜測,效率已經(jīng)接近 spymemcached甚至超過。





    評論

    # re: xmemcached 0.60 優(yōu)化過程  回復(fù)  更多評論   

    2009-03-06 17:09 by Joshua Zhu
    兩個疑問:
    1)KMP作為復(fù)雜度為O(m + n)的算法,會什么為慢“很多”?它是有可能比暴力法慢(這取決于串和模式的內(nèi)容),但不可能慢很多吧。是不是你在Preprocessing time上花費了額外的時間呢?
    2)BM算法確實在很多情況下都要比KMP高效一些,但是沒有“高上幾倍”這么夸張啵?

    望莊老大不理賜教 :D

    # re: xmemcached 0.60 優(yōu)化過程  回復(fù)  更多評論   

    2009-03-09 08:55 by dennis
    盡管跟老朱討論過了,還是回復(fù)下
    1)KMP算法能那么快主要還是看模式的結(jié)構(gòu),如果重復(fù)模式多,那么跳躍的字符會更多,在xmemcached中的模式只是\r\n兩個字節(jié),因此KMP帶來的益處基本沒有,還不如簡單匹配
    2)“高上幾倍”,完全是google出來的說辭,見諒:),算法我不懂
    主站蜘蛛池模板: 暖暖免费高清日本中文| 国产精品免费观看| 亚洲日本一区二区一本一道| 亚洲人成网男女大片在线播放| a拍拍男女免费看全片| 亚洲成人免费网址| 毛色毛片免费观看| WWW亚洲色大成网络.COM| 亚洲国产av一区二区三区| 人人公开免费超级碰碰碰视频| 久久久久亚洲av毛片大| 在线涩涩免费观看国产精品 | 无码区日韩特区永久免费系列 | 亚洲国产无线乱码在线观看| 特级淫片国产免费高清视频| 美女免费视频一区二区| 久久亚洲精品无码播放| 久久午夜羞羞影院免费观看| 亚洲国产品综合人成综合网站| 曰皮全部过程视频免费国产30分钟| 黄色大片免费网站| 久久久亚洲欧洲日产国码农村| 18未年禁止免费观看| 亚洲av无码片vr一区二区三区 | 国产免费看插插插视频| 一级毛片免费观看不收费| 国产亚洲福利精品一区| 免费视频爱爱太爽了| 国产AV无码专区亚洲AV蜜芽| 亚洲精品无码mv在线观看网站 | 亚洲中文字幕久久久一区| 亚洲?V无码乱码国产精品| 久久青草精品38国产免费| 最新亚洲春色Av无码专区| 久久精品国产亚洲7777| 国产精品成人观看视频免费| 狠狠综合亚洲综合亚洲色| 亚洲欧洲日产国码久在线观看| 啦啦啦www免费视频| 拍拍拍无挡免费视频网站| 久久亚洲国产成人影院|