91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis如何采用不同內存分配器碎片率對比

發布時間:2022-01-15 17:20:21 來源:億速云 閱讀:156 作者:iii 欄目:數據庫

今天小編給大家分享一下Redis如何采用不同內存分配器碎片率對比的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

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

  /* Explicitly override malloc/free etc when using tcmalloc. */

  #if defined(USE_TCMALLOC)

  #define malloc(size) tc_malloc(size)

  #define calloc(count,size) tc_calloc(count,size)

  #define realloc(ptr,size) tc_realloc(ptr,size)

  #define free(ptr) tc_free(ptr)

  #elif defined(USE_JEMALLOC)

  #define malloc(size) je_malloc(size)

  #define calloc(count,size) je_calloc(count,size)

  #define realloc(ptr,size) je_realloc(ptr,size)

  #define free(ptr) je_free(ptr)

  #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

  Redis怎樣采用不同內存分配器碎片率對比

  然后再進行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 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.01

  mem_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.02

  mem_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.31

  mem_allocator:libc

以上就是“Redis如何采用不同內存分配器碎片率對比”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平阳县| 南华县| 普兰县| 迁西县| 安义县| 齐齐哈尔市| 旅游| 龙胜| 遂溪县| 杭锦旗| 台江县| 通州市| 新河县| 防城港市| 兰考县| 洛扎县| 鹤山市| 绥德县| 高密市| 鄂尔多斯市| 牟定县| 陕西省| 夏河县| 阿克| 吴桥县| 全椒县| 于都县| 理塘县| 合川市| 息烽县| 济源市| 崇阳县| 洞头县| 商都县| 盐池县| 临沧市| 贵南县| 云阳县| 翼城县| 平利县| 六安市|