更好的內存管理-jemalloc (redis 默認使用的)

更好的內存管理-jemalloc  

2011-05-31 11:23:23|  分類: 軟件技術(雜)|字號 訂閱 linux

今年年初因爲facebook而火起jemalloc人之,但卻不知,malloc界裏面很早就出名了。Jemalloc始人Jason Evans也是在FreeBSD頗有名的開發。此人就在2006提升低性能的mallocjemallocJemalloc2007始以FreeBSD準引進來的。件技革新不少是FreeBSD起的。在FreeBSD用普遍的技術會慢慢入到linux chrome

目前jemallocfirefox中也在使用。在firefox2中出存碎片問題以後,便在firefox3中使用了jemalloc。在safarichrome中使用的是googletcmalloc 分佈式

Jemalloc的技特性 ide

Jemalloc彙集了malloc的使用程中所驗證的不少技。忽略細節着眼,最出色的部分還是arenathread cache。(事上,這兩個與tcmalloc的架幾乎相同。Jemalloc only的部分將會在另外一次posting繼續 工具

Arena post

其像malloc集中管理一整塊內存,不如其分紅塊來分而治之。此小便稱爲arena想象一下,小朋友一圖紙們隨意地點。果可想而知,他確定相互方而不敢肆意地synchronization),而影響畫圖效率。可是若是老事先在大圖紙分好每人的域,小朋友就能夠又快又準地在各自地域上畫圖這樣念就是arena 性能

Thread cache google

若是是闢小塊內存,使不arena而直接malloc各自的thread cache域。此ideagoogletcmalloc的核心部分,亦在jemalloc中體 idea

再拿上面的例子,小朋友除了一圖紙外,再各自A4這樣,小朋友在不大面的點,只在本身的A4上心情地便可(no arena seeking)。能夠在本身手上的或塗(using thread cache),徹底不用人(no synchronization, no locking),迅速有效地 spa

jemalloc的核心layout。看着複雜,其都是上面明的部分。

更好的內存管理-jemalloc - Alex - wangkaisino的博客
 

實際jemalloc的性能呢?

更好的內存管理-jemalloc - Alex - wangkaisino的博客
 

最左的就是glibcmalloc,最右的就是jemalloc從圖表上能夠看出,jemalloc的性能有glibc倍以上。很是倒性的性能差。所以,使用了jemalloc用程序天然快不少。Jemalloc的就是tcmallocTcmalloc的性能其相差甚微,低jemalloc2.1.04.5%上和tcmalloc1.4版本,而現在到了1.6版本,所以實際這兩應該是不相仲伯的。Jemalloc始人jason evans也意一點,cpu core 8以上的算機上jemalloc效率更高。

程序的最後的免午飯  kth分佈式技lab      

2005表了一篇文章午飯的束了在以前,程序就算不用費腦子,cpu時鐘速度增長,程序性能本身就上去。但在不一樣,cpu時鐘趨定,而核地增長。程序須要適應這樣的多程多程的境,開發出適合的程序。文章的大這樣容。

6年以後的現在,篇文章徹底現實了。事cpu時鐘停留在3GHz,而核不上升。在程序要適程多程的分佈式算,速度才能上升。可是這樣的程序很

在在多程的境下,程序員們的最後一道午飯即是tcmallocjemalloc這樣malloc library於使用多程的程序而言,性能提升%

共享一下我本人的經驗。我本人在kth術研究所分佈式技lab中承擔iLock(分佈式同步工具,請參googlechubby)。在iLock中用了googletcmalloc果,性能提高了18~22%

最大的點就是不須要作任何複雜的工做即可獲得這樣的效果。不須要代編譯。只需在行二制以前,在cmd窗口中

$ LD_PRELOAD=tcmalloc所設置的文件夾/libtcmalloc.so

這樣在以後行的用程序使用tcmallocjemalloc而代替glibcmallocptmalloc)。置此,我即可獲得性能20%的提高,這真是送的最後的免午飯。

現在,在分佈式技lab中使用googletcmalloc。緣由在於性能上者差很少,但googletcmalloc所提供的程序分析工具很是(heap profiler, cpu profiler)豐富。因此tcmalloc可能更方便一些。

必定要使用最新的malloc?必定要的!

相關文章
相關標籤/搜索