zoukankan      html  css  js  c++  java
  • 使用tcmalloc替换系统的malloc

    今天对服务器进行压测,模拟的请求量到4万次/分的时候,进程的CPU占用就已经达到400%了(也就是把四个核都占到100%)。其实模拟的请求数据都是单一的,不会因为BUG的原因导致CPU过高。怀疑是代码里的STL用得过多,加之ttserver和memcached大量的读操作——大量的小内存分配可能带来全局的锁竞争,从而可能使得CPU过高。

    之前听说过google的tcmalloc是一个很好的线程内的内存分配器,能够提高内存分配的性能。正好今天试试能不能改善我的代码的性能。
    安装的过程如下:
    #1、到google下载代码:
    cd /home/ahfu/temp
    wget https://gperftools.googlecode.com/files/gperftools-2.1.tar.gz

    #解压
    tar -zxvf google-perftools-1.4.tar.gz
    #看看说明
    cd google-perftools-1.4
    ./configure -h
    #选择简单的安装
    mkdir -p /home/ahfu/temp/tcmalloc
    ./configure --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal --disable-shared
    make && make install
    #在makefile里面加入一行就行
    LIB = "/home/ahfu/temp/tcmalloc/lib/libtcmalloc_minimal.a"
    #  g++ .....   ${LIB}

    再进行压测!
    大吃一惊!
    请求量模拟到28万次/分后,CPU占用还不到20%!!!



  • 相关阅读:
    google搜索教程
    phoenix/stack-five
    phoenix/stack-four
    phoenix/stack-three
    phoenix/stack-one
    fork 在 Linux 内核里面的实现
    无文件执行 ELF
    glibc 堆内存管理杂记
    QOS shaping 知识要点
    QOS CQ
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317569.html
Copyright © 2011-2022 走看看