jemalloc何方神圣

背景
最近有一個壓測任務(wù),比較物理機(jī)和容器云機(jī)器上服務(wù)的性能。前提是兩臺機(jī)器的配置CPU、內(nèi)存都一樣,且都是獨占機(jī)器,但是壓測結(jié)果大跌眼鏡物理機(jī)QPS居然連640都扛不住,而容器云機(jī)器能扛到2000。理論上來講物理機(jī)性能肯定是比容器云好的,但這究竟是為什么呢?經(jīng)多方定位發(fā)現(xiàn)rd同學(xué)在編譯代碼過程中設(shè)置jemalloc參數(shù)失敗,后重新設(shè)置重新壓測果然物理機(jī)性能優(yōu)于容器云性能。至于為什么物理機(jī)更優(yōu)秀當(dāng)然是因為容器云的硬件資源是在軟件層模擬出來導(dǎo)致的嘍,虛擬機(jī)沒有硬件實體,而物理機(jī)有實體。也就是說,物理機(jī)是有實體的硬件系統(tǒng),比如服務(wù)器等,而虛擬機(jī)是借助物理機(jī)虛擬出虛擬的硬件系統(tǒng)。
jemalloc作用

jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support

意思是說jemalloc干了malloc干的活,而且干得好一些,主要體現(xiàn)在避免內(nèi)存碎片與并發(fā)擴(kuò)展上。

jemalloc性能圖

jemalloc安裝并使用

  1. 下載:https://github.com/jemalloc/jemalloc/releases
  2. 下載包地址:jemalloc-4.2.1
  3. tar -xjvf jemalloc-4.2.1.tar.bz2
    生成的文件列表如下:


    image.png
  4. 在此目錄下預(yù)編譯
親測這個好使:./configure --prefix /usr/local/jemalloc
這個不好使:./configure –prefix=/usr/local/jemalloc  

5.編譯:make -j8 && make install
生成的頭文件在include里,庫在lib里。

使用
在編譯鏈接時直接指向jemalloc即可:

gcc -g -c -o 1.o 1.c
gcc -g -o 1.out 1.o -L/usr/local/jemalloc/lib -ljemalloc

運行程序時可能會報找不到庫:


image.png

只要將jemalloc的庫被系統(tǒng)找到即可:

echo /usr/local/jemalloc/lib >> /etc/ld.so.conf
ldconfig

重新運行即可

實際開發(fā)機(jī)上直接:export ENABLE_JEMALLOC=true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容