更好的内存管理-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?必定要的!

相关文章
相关标签/搜索