星期四, 7月 11, 2019

jemalloc

jemalloc (github) 是效能聽說很好的 malloc library。
之前是在 為線上環境而最佳化的 Ruby:Fullstaq Ruby 看到的,看到的當下是想說,會不會也有人來編譯用 jemalloc 的 Python 版本,不過很遺憾的是沒有。後來找了 jemalloc 的資料以後,發現要替換其實不難。Ubuntu 14.04 是已經有包 libjemalloc 了,但版本較舊,是 3.5.1 版。
後來還是選擇自行編譯,然後使用 LD_PRELOAD 環境變數來替換 python 的 malloc library。
那要怎麼檢查 python 是不是真的有使用到呢?這可以使用 lsof 來檢查。(How to see the currently loaded shared objects in Linux?)
lsof /usr/local/lib/libjemalloc.so.2
同款的還有 tcmalloc (Google 出的),有空也來測試看看。
P.S. ptmalloc 是 glibc 的 malloc。

沒有留言: