亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

淺談redis采用不同內存分配器tcmalloc和jemalloc

2020-10-28 21:38:05
字體:
來源:轉載
供稿:網友

我們知道Redis并沒有自己實現內存池,沒有在標準的系統內存分配器上再加上自己的東西。所以系統內存分配器的性能及碎片率會對Redis造成一些性能上的影響。

在Redis的 zmalloc.c 源碼中,我們可以看到如下代碼:

/* Double expansion needed for stringification of macro values. */ #define __xstr(s) __str(s) #define __str(s) #s #if defined(USE_TCMALLOC) #define ZMALLOC_LIB ("tcmalloc-" __xstr(TC_VERSION_MAJOR) "." __xstr(TC_VERSION_MINOR)) #include <google/tcmalloc.h> #if (TC_VERSION_MAJOR == 1 && TC_VERSION_MINOR >= 6) || (TC_VERSION_MAJOR > 1) #define HAVE_MALLOC_SIZE 1 #define zmalloc_size(p) tc_malloc_size(p) #else #error "Newer version of tcmalloc required" #endif #elif defined(USE_JEMALLOC) #define ZMALLOC_LIB ("jemalloc-" __xstr(JEMALLOC_VERSION_MAJOR) "." __xstr(JEMALLOC_VERSION_MINOR) "." __xstr(JEMALLOC_VERSION_BUGFIX)) #include <jemalloc/jemalloc.h> #if (JEMALLOC_VERSION_MAJOR == 2 && JEMALLOC_VERSION_MINOR >= 1) || (JEMALLOC_VERSION_MAJOR > 2) #define HAVE_MALLOC_SIZE 1 #define zmalloc_size(p) je_malloc_usable_size(p) #else #error "Newer version of jemalloc required" #endif #elif defined(__APPLE__) #include <malloc/malloc.h> #define HAVE_MALLOC_SIZE 1 #define zmalloc_size(p) malloc_size(p) #endif #ifndef ZMALLOC_LIB #define ZMALLOC_LIB "libc" #endif 

從上面的代碼中我們可以看到,Redis在編譯時,會先判斷是否使用tcmalloc,如果是,會用tcmalloc對應的函數替換掉標準的libc中的函數實現。其次會判斷jemalloc是否使得,最后如果都沒有使用才會用標準的libc中的內存管理函數。

而在最新的2.4.4版本中,jemalloc已經作為源碼包的一部分包含在源碼包中,所以可以直接被使用。而如果你要使用tcmalloc的話,是需要自己安裝的。

下面簡單說一下如何安裝tcmalloc包,tcmalloc是google-proftools中的一部分,所以我們實際上需要安裝google-proftools。如果你是在64位機器上進行安裝,需要先安裝其依賴的libunwind庫。

wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz tar zxvf libunwind-0.99-alpha.tar.gz cd libunwind-0.99-alpha/ CFLAGS=-fPIC ./configure make CFLAGS=-fPIC make CFLAGS=-fPIC install

然后再進行google-preftools的安裝:

wget http://google-perftools.googlecode.com/files/google-perftools-1.8.1.tar.gz tar zxvf google-perftools-1.8.1.tar.gz cd google-perftools-1.8.1/ ./configure --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal make && make install sudo echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf #如果沒有這個文件,自己建一個 sudo /sbin/ldconfig

然后再進行Redis的安裝,在make時指定相應的參數以啟用tcmalloc

$ curl -O http://redis.googlecode.com/files/redis-2.4.4.tar.gz $ tar xzvf redis-2.4.4.tar.gz $ cd redis-2.4.4 $ make USE_TCMALLOC=yes FORCE_LIBC_MALLOC=yes $ sudo make install

再啟動Redis后通過info命令就能看到使用的內存分配器了。

下面回到本文的主題,對于tcmalloc,jemalloc和libc對應的三個內存分配器。其性能和碎片率如何呢?

下面是一個簡單測試結果,使用Redis自帶的redis-benchmark寫入等量數據進行測試,數據摘自采用不同分配器時Redis info信息。

我們可以看到,采用tcmalloc時碎片率是最低的,為1.01,jemalloc為1.02,而libc的分配器碎片率為1.31,如下所未:

used_memory:708391440 used_menory_human:675.57M used_memory_rss:715169792 used_memory_peak:708814040 used_memory_peak_human:675.98M mem_fragmentation_ratio:1.01mem_allocator:tcmalloc-1.7

used_memory:708381168 used_menory_human:675.56M used_memory_rss:723587072 used_memory_peak:708803768 used_memory_peak_human:675.97M mem_fragmentation_ratio:1.02mem_allocator:jemalloc-2.2.1

used_memory:869000400 used_menory_human:828.74M used_memory_rss:1136689152 used_memory_peak:868992208 used_memory_peak_human:828.74M mem_fragmentation_ratio:1.31mem_allocator:libc

上面的測試數據都是小數據,也就是說單條數據并不大,下面我們嘗試設置benchmark的-d參數,將value值調整為1k大小,測試結果發生了一些變化:

used_memory:830573680 used_memory_human:792.10M used_memory_rss:849068032 used_memory_peak:831436048 used_memory_peak_human:792.92M mem_fragmentation_ratio:1.02mem_allocator:tcmalloc-1.7

used_memory:915911024 used_memory_human:873.48M used_memory_rss:927047680 used_memory_peak:916773392 used_memory_peak_human:874.30M mem_fragmentation_ratio:1.01mem_allocator:jemalloc-2.2.1

used_memory:771963304 used_memory_human:736.20M used_memory_rss:800583680 used_memory_peak:772784056 used_memory_peak_human:736.98M mem_fragmentation_ratio:1.04mem_allocator:libc

可以看出,在分配大塊內存和小塊內存上,幾種分配器的碎片率差距還是比較大的,大家在使用Redis的時候,還是盡量用自己真實的數據去做測試,以選擇最適合自己數據的分配器。

以上就是小編為大家帶來的淺談redis采用不同內存分配器tcmalloc和jemalloc全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品永久在线| 国模精品一区二区三区色天香| 成人激情在线观看| 粗暴蹂躏中文一区二区三区| 欧美黄色www| 国产综合在线视频| 亚洲综合最新在线| 亚洲福利视频久久| 亚洲精品白浆高清久久久久久| 日韩精品极品毛片系列视频| 亚洲精品电影网在线观看| 国产精品女人久久久久久| 国产亚洲一级高清| 欧美成人午夜剧场免费观看| 成人羞羞国产免费| 国产一区二区三区网站| 色www亚洲国产张柏芝| 91久久嫩草影院一区二区| 欧美福利小视频| 久久久久久久国产精品视频| 国产精品久久久久久五月尺| 亚洲国产精品推荐| 在线观看精品自拍私拍| www.99久久热国产日韩欧美.com| 日韩电影中文字幕av| 亚洲免费av网址| 国产精品第一区| 日韩美女视频中文字幕| 亚洲欧美国产视频| 日韩经典中文字幕| 亚洲国产成人精品久久久国产成人一区| 日韩亚洲欧美中文高清在线| 欧美成人激情图片网| 亚洲欧洲国产一区| 亚洲va男人天堂| 欧美怡春院一区二区三区| 秋霞成人午夜鲁丝一区二区三区| 成人黄色中文字幕| 亚洲欧美精品一区| 91精品久久久久久久久久另类| 国语自产精品视频在免费| 91av在线免费观看| 性欧美在线看片a免费观看| 日韩激情av在线播放| 欧美色xxxx| 热门国产精品亚洲第一区在线| 久久精品男人天堂| 亚洲国产欧美一区二区三区久久| 国产激情久久久久| 欧美国产第一页| 欧美老肥婆性猛交视频| 色综合伊人色综合网站| 欧美最顶级丰满的aⅴ艳星| 精品久久香蕉国产线看观看gif| 国产精品久久久久久久久久| 黑人极品videos精品欧美裸| 久久免费少妇高潮久久精品99| 黄色91在线观看| 深夜福利一区二区| 日韩精品中文字幕有码专区| 成人免费观看a| 久久久999精品免费| 91免费福利视频| 日韩精品极品在线观看播放免费视频| 97久久国产精品| 久久人人爽人人爽人人片av高请| 成人信息集中地欧美| 久久夜精品va视频免费观看| 热99在线视频| 日韩在线视频一区| 中文字幕一区二区三区电影| 亚洲精品久久久久久久久久久久| 精品国产一区二区三区久久狼5月| 国产精品男女猛烈高潮激情| 亚洲精品免费一区二区三区| 欧美制服第一页| 欧美一区三区三区高中清蜜桃| 午夜欧美不卡精品aaaaa| 亚洲欧美日韩另类| 国产精品九九九| 欧美一级免费视频| 亚洲的天堂在线中文字幕| 日韩在线观看免费av| 亚洲第一国产精品| 97av视频在线| 亚洲精品综合精品自拍| 91福利视频网| 久久九九热免费视频| 久久精品电影网站| 毛片精品免费在线观看| 日韩av黄色在线观看| 国产精品自在线| 91精品国产高清久久久久久91| 一区二区三区四区视频| 午夜精品久久久久久久99黑人| 91午夜理伦私人影院| 成人免费淫片aa视频免费| 亚洲午夜久久久影院| 久久国产精品久久久久久久久久| 久久久成人精品| 国产精品极品尤物在线观看| 亚洲中国色老太| 菠萝蜜影院一区二区免费| 91精品一区二区| 51久久精品夜色国产麻豆| 日韩中文av在线| 亚洲天堂一区二区三区| 色爱精品视频一区| 国产精品偷伦一区二区| 中文字幕国产日韩| 日韩欧美aaa| 欧美高清自拍一区| 欧美在线视频在线播放完整版免费观看| 久久久免费精品视频| 91av视频在线观看| 亚洲免费视频在线观看| 欧美性猛交xxxx免费看久久久| 国产亚洲视频中文字幕视频| 亚洲人成绝费网站色www| 国产精品av电影| 日韩成人av网| 亚洲欧洲xxxx| 欧美乱大交xxxxx| 成人免费看片视频| 136fldh精品导航福利| 中文字幕在线看视频国产欧美在线看完整| 91精品久久久久久久久久久久久| 欧美色图在线视频| 2020国产精品视频| 91av网站在线播放| 日本一区二区不卡| 欧美日韩国产中字| 美女扒开尿口让男人操亚洲视频网站| 日韩一区二区三区xxxx| 国产成人精品视频在线| 一级做a爰片久久毛片美女图片| 久久精品免费播放| 狠狠躁天天躁日日躁欧美| 欧美日韩福利在线观看| 91在线观看免费高清| 九九热这里只有精品免费看| 午夜精品久久久久久久99黑人| 欧美韩日一区二区| 在线观看久久av| 亚洲专区中文字幕| 2018日韩中文字幕| 高清日韩电视剧大全免费播放在线观看| 国产精品免费久久久久久| 欧美日韩国产成人在线| 国产精品高清网站| 亚洲欧美国产日韩天堂区| 国产精品草莓在线免费观看| 亚洲男人天堂2019| 最近2019年日本中文免费字幕| 日本午夜人人精品| 国产精品成人av在线| 亚洲精品黄网在线观看| 亚洲国产91精品在线观看| 国产aⅴ夜夜欢一区二区三区| 韩国19禁主播vip福利视频| 成人激情黄色网| 日本久久久久亚洲中字幕| 国产精品户外野外| 成人免费激情视频|