google-perftools里的tcmalloc比glibc的malloc的分配效率和性能要搞多了,所以经常用来优化。
据说,对mysql大并发下有效的提高性能。。
环境 centos 5.3 mysql 5.1.30
我编译mysql 的参数是
引用
./configure --prefix=/usr/local/mysql --without-debug --with-unix-socket-path=/usr/local/mysql/mysql.sock --with-mysqld-ldflags="-all-static -ltcmalloc" --with-client-ldflags=-all-static --with-extra-charsets=utf8 --with-pthread --enable-thread-safe-client --enable-profiling --enable-assembler CFLAGS="-O3"CXX=g++ CXXFLAGS="-O3"
make的时候结果出错。
引用
mysqld.o: In function `set_ports()':
mysqld.cc.text+0x84b): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/local/lib/libtcmalloc.a(stacktrace.o): In function `GetStackTrace(void**, int, int)':
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:65: undefined reference to `_ULx86_64_init_local'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:78: undefined reference to `_ULx86_64_step'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:70: undefined reference to `_ULx86_64_get_reg'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:78: undefined reference to `_ULx86_64_step'
/usr/local/lib/libtcmalloc.a(stacktrace.o): In function `GetStackFrames(void**, int*, int, int)':
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:126: undefined reference to `_ULx86_64_init_local'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:130: undefined reference to `_ULx86_64_step'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:130: undefined reference to `_ULx86_64_get_reg'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:139: undefined reference to `_ULx86_64_step'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:139: undefined reference to `_ULx86_64_get_reg'
/home/willko/tools/google-perftools-1.0/src/stacktrace_libunwind-inl.h:137: undefined reference to `_ULx86_64_get_reg'
collect2: ld returned 1 exit status
make[3]: *** [mysqld] Error 1
make[3]: Leaving directory `/home/willko/tools/mysql-5.1.30/sql'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/willko/tools/mysql-5.1.30/sql'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/willko/tools/mysql-5.1.30/sql'
make: *** [all-recursive] Error 1
把--with-mysqld-ldflags="-all-static -ltcmalloc" 改成 --with-mysqld-ldflags="-all-static -ltcmalloc -lunwind"
make 一样出错,只是少了错误。。
原来,mysql的静态模式下是不支持外挂的。
所以必须去掉静态,也就是--with-mysqld-ldflags="-ltcmalloc -lunwind"就可以了。
不过,最后我没选择整合编译的方法。。。
分享到:
相关推荐
安装tcmalloc所需的源代码,和完整编译安装应用过程。 unzip tcmalloc.zip tar -zxvf gperftools-2.1.tar.gz cd gperftools-2.1 ./configure --disable-cpu-profiler --disable-heap-profiler --disable-heap-...
在Linux 64位系统上编译安装Google的tcmalloc是一个涉及到系统级编程和内存管理的高级操作。tcmalloc是Google开发的一种高效的内存分配器,它优化了C++标准库中的malloc和free函数,提供了更快速的内存分配和释放,...
tcmalloc作为高效的内存分配器,其编译好的lib和dll文件在本压缩包中提供了方便的使用选项。根据项目需求,你可以选择动态或静态链接tcmalloc,以提升程序的内存管理和并发性能。正确集成并使用tcmalloc,有助于优化...
整合TCMalloc到MySQL可以带来诸多性能优势,例如更快的内存分配速度、更少的系统资源消耗以及更好的并发处理能力。然而,需要注意的是,虽然TCMalloc通常能提高性能,但在某些特定工作负载下可能并不适用,因此在...
在项目中集成tcmalloc需要进行适当的编译选项设置,如在CMake或Makefile中指定链接gperftools库。同时,可以通过环境变量或者代码配置tcmalloc的行为,如开启调试模式,调整线程缓存大小等。 总结来说,Tcmalloc-v...
在Linux CentOS系统上编译安装MySQL是一个相对复杂的过程,但能提供高度的定制性和优化空间。MySQL是一款流行的开源关系型数据库管理系统,广泛应用于各种规模的企业和项目中。本指南将详细阐述如何在CentOS上从源...
4. **替换默认内存分配器**:为了使用Tcmalloc,你需要在程序启动时调用`google::InitGoogleLogging()`和`tcmalloc::TcmallocPageHeap::Init()`函数来初始化Tcmalloc。 5. **测试与优化**:编译并运行项目,检查...
tcmalloc是一种高性能的内存管理库,它可以帮助开发者检测和解决内存泄漏问题。在本文中,我们将介绍如何使用tcmalloc来排查内存泄漏的方法。 安装gperftools 首先,我们需要安装gperftools这个工具包,可以使用...
### 控制内存增长TCMALLOC ...通过合理地配置和使用TCMalloc,可以显著提高应用程序的性能,尤其是在多线程环境下。随着软件系统的日益复杂化,TCMalloc将在未来的软件开发中发挥更加重要的作用。
Tcmalloc是Google PerfTools的一部分,这个工具集还包括了CPU和内存性能分析工具,如Profiler和Heap Profiler。 **Gperftools简介** Gperftools是Google开源的一个性能分析工具集合,其主要目标是帮助开发者找到...
在讨论基于NUMA架构的TCMalloc内存管理算法之前,我们先来深入了解NUMA架构和TCMalloc算法的概念及其在内存管理中的作用。 NUMA(Non-Uniform Memory Access)架构是一种多处理器架构,其中每个处理器(CPU)有其...
2. **开发工具和库**:如gcc编译器,用于编译MySQL源码;make工具,帮助构建和安装软件;openssl库,用于加密和安全通信。 3. **系统工具**:如Perl,用于处理系统脚本和配置;readline库,提供命令行编辑功能;...
These tools are for use by developers so that they can create more robust applications. Especially of use to those developing multi-... Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler.
These tools are for use by developers so that they can create more robust applications. Especially of use to those developing multi-... Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler.
这个tcmalloc很出名了,是google出的内存管理模块,比传统模块控制更合理,能应付更高的并发,而且也更稳定. 不过这个模块不是系统自带的,没有原生安装,所以需要手动去安装操作,稍微有点麻烦.这个模块包含在google封装...
TCMalloc是Google对C的malloc()和C ++的operator new的自定义实现,用于在C和C ++代码中进行内存分配。 TCMalloc是一种快速的多线程malloc实现。构建TCMalloc 是TCMalloc的官方构建系统。 《 包含有关TCMalloc的...
Central Cache具有和thread cache相同映射规则的哈希桶结构,不仅可以向thread cache提供内存,还可以从thread cache回收内存,达到内存在多个线程中均衡调度的作用。Page Cache是以页为单位管理内存的哈希桶结构,...
- 配置编译选项,`./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-tcmalloc` - 编译和安装,`make && make install` - 初始化数据库,`scripts/mysql_install_db --user=mysql` - 设置权限...
例如,如果发现某个查询在MySQL中消耗了大量内存,libunwind可以帮助确定是哪个函数调用导致了这个问题,而tcmalloc则可以提供内存分配的详细统计,帮助找出内存使用效率低下的原因。 在实际部署中,MySQL和Nginx...