Skip to content
  • Alexandre Derumier's avatar
    7b01cb97
    configure: Add support for jemalloc · 7b01cb97
    Alexandre Derumier authored
    
    
    This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking
    to jemalloc memory allocator.
    
    We have already tcmalloc support,
    but it seem to not working well with a lot of iothreads/disks.
    
    The main problem is that tcmalloc use a shared thread cache of 16MB
    by default.
    With more threads, this cache is shared, and some bad garbage collections
    can occur if the cache is too low.
    
    It's possible to tcmalloc cache increase it with a env var:
    TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB
    
    With default 16MB, performances are  really bad with more than 2 disks.
    Increasing to 256MB, it's helping but still have problem with 16 disks/iothreads.
    
    Jemalloc don't have performance problem with default configuration.
    
    Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32,
    with rbd block backend (librbd is doing a lot of memory allocation),
    1 iothread by disk
    
    glibc malloc
    ------------
    
    1 disk      29052
    2 disks     55878
    4 disks     127899
    8 disks     240566
    15 disks    269976
    
    jemalloc
    --------
    
    1 disk      41278
    2 disks     75781
    4 disks     195351
    8 disks     294241
    15 disks    298199
    
    tcmalloc 2.2.1 default 16M cache
    --------------------------------
    
    1 disk   37911
    2 disks  67698
    4 disks  41076
    8 disks  43312
    15 disks 37569
    
    tcmalloc : 256M cache
    ---------------------------
    
    1 disk     33914
    2 disks    58839
    4 disks    148205
    8 disks    213298
    15 disks   218383
    
    Signed-off-by: default avatarAlexandre Derumier <aderumier@odiso.com>
    Message-Id: <1434711418-20429-1-git-send-email-aderumier@odiso.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    7b01cb97
    configure: Add support for jemalloc
    Alexandre Derumier authored
    
    
    This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking
    to jemalloc memory allocator.
    
    We have already tcmalloc support,
    but it seem to not working well with a lot of iothreads/disks.
    
    The main problem is that tcmalloc use a shared thread cache of 16MB
    by default.
    With more threads, this cache is shared, and some bad garbage collections
    can occur if the cache is too low.
    
    It's possible to tcmalloc cache increase it with a env var:
    TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB
    
    With default 16MB, performances are  really bad with more than 2 disks.
    Increasing to 256MB, it's helping but still have problem with 16 disks/iothreads.
    
    Jemalloc don't have performance problem with default configuration.
    
    Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32,
    with rbd block backend (librbd is doing a lot of memory allocation),
    1 iothread by disk
    
    glibc malloc
    ------------
    
    1 disk      29052
    2 disks     55878
    4 disks     127899
    8 disks     240566
    15 disks    269976
    
    jemalloc
    --------
    
    1 disk      41278
    2 disks     75781
    4 disks     195351
    8 disks     294241
    15 disks    298199
    
    tcmalloc 2.2.1 default 16M cache
    --------------------------------
    
    1 disk   37911
    2 disks  67698
    4 disks  41076
    8 disks  43312
    15 disks 37569
    
    tcmalloc : 256M cache
    ---------------------------
    
    1 disk     33914
    2 disks    58839
    4 disks    148205
    8 disks    213298
    15 disks   218383
    
    Signed-off-by: default avatarAlexandre Derumier <aderumier@odiso.com>
    Message-Id: <1434711418-20429-1-git-send-email-aderumier@odiso.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading