莊周夢(mèng)蝶

          生活、程序、未來(lái)
             :: 首頁(yè) ::  ::  :: 聚合  :: 管理

          hack,hacker

          Posted on 2007-10-15 09:09 dennis 閱讀(686) 評(píng)論(0)  編輯  收藏 所屬分類: 涂鴉linux & C
              hack有水平高低之分,最近看到一個(gè)blog,牛人的hack水平讓你不得不服。情況是這樣的,牛人在使用 mongrel_light_cluster的過(guò)程中,發(fā)現(xiàn)這個(gè)cluster違反了copy-on-write的語(yǔ)義,導(dǎo)致占用了太多的內(nèi)存。根本原因在于Ruby的GC機(jī)制是marks all memory pages as dirty。為了減少內(nèi)存的占用,讓集群跑更多mongrel,牛人走上了hack之路,給c ruby打補(bǔ)丁,他也真的做到了。c ruby的GC使用的是mark and sweep(標(biāo)記并清除)的垃圾收集算法,他發(fā)現(xiàn)在mark過(guò)程中使用了st_table,這個(gè)數(shù)據(jù)結(jié)構(gòu)占用了很大的內(nèi)存,那么就改用Google’s sparse_hash。然后他又寫了一個(gè)memory pool,以應(yīng)對(duì)marking和sweep使用過(guò)程中對(duì)malloc和free調(diào)用帶來(lái)的內(nèi)存損失,因?yàn)樵趚86 GNU/linux gcc上,malloc函數(shù)如果申請(qǐng)的內(nèi)存小于76KB,那么當(dāng)free的時(shí)候這些內(nèi)存不會(huì)被返還給操作系統(tǒng)。他的hack之路還沒(méi)結(jié)束,有興趣的關(guān)注他的blog:

           http://izumi.plan99.net/blog/index.php/


          主站蜘蛛池模板: 衡南县| 都匀市| 增城市| 新干县| 凤冈县| 鲁山县| 泾源县| 红原县| 靖州| 五寨县| 日照市| 尉犁县| 诸城市| 全州县| 汾西县| 竹山县| 张家界市| 革吉县| 韩城市| 商南县| 土默特右旗| 错那县| 门源| 沁源县| 柞水县| 成武县| 宣化县| 吴忠市| 南昌市| 西城区| 资兴市| 河东区| 西畴县| 泰来县| 黔江区| 皮山县| 肇东市| 宿松县| 来宾市| 炉霍县| 民和|