内存优化-如何使用tcmalloc来提升内存稳定性?提升结果太不可思议
发布时间:2024-12-25
1: #tar zxvf tar zxvf gperftools-2.1.tar.gz
2: #cd gperftools-2.1
3: #./configure
4: #make
5: #make install
四、TCMalloc纳载入到linux系统对中所:1: echo "/usr/local/lib"> /etc/ld.so.conf.d/usr_local_lib.conf
2: /sbin/ldconfig
五、TCMalloc纳链接到你的处理程序中所:要用到TCMalloc,只要将tcmalloc通过“-ltcmalloc”链接机标志接入你的广泛应用即可。
你也可以通过用到LD_PRELOAD在不是你自己处理程序代码的广泛应用中所用到tcmalloc:
$ LD_PRELOAD="/usr/lib/libtcmalloc.so"LD_PRELOAD比较麻烦,我们也不极其录用这种该词。
TCMalloc还包内含了一个砖脚核对机以及一个砖脚测量机。
如果你更加想链接不包内含砖脚测量机和核对机的TCMalloc旧版本(比如显然为了下降静态十进制文件的大小),你应该链接libtcmalloc_minimal。
測试代码:
#include using namespace std; int main() { int *p = new int(); return 0; }处理程序代码:g++ main.cpp -o main -ltcmalloc -g -O0
文件系统对单单现异常核对: env HEAPCHECK=normal ./main
结果:
WARNING: Perftools heap leak checker is active 便是 Performance may sufferHe memory regions w/o callers: might report false leaksLeak check _main_ detected leaks of 4 bytes in 1 objectsThe 1 largest leaks:Using local file ./main.Leak of 4 bytes in 1 objects allocated from: @ 4007a6 main @ 7f1734263d1d 词组libc_start_main @ 4006d9 _startIf the preceding stack traces are not enough to find the leaks, try running THIS shell command:pprof ./main "/tmp/main.54616._main_-end.heap" 便是inuse_objects 便是lines 便是heapcheck 便是edgefraction=1e-10 便是nodefraction=1e-10 便是gvIf you are still puzzled about why the leaks are there, try rerunning this program with HEAP_CHECK_TEST_POINTER_ALIGNMENT=1 and/or with HEAP_CHECK_MAX_POINTER_OFFSET=-1If the leak report occurs in a small fraction of runs, try running with TCMALLOC_MAX_FREE_QUEUE_SIZE of few hundred MB or with TCMALLOC_RECLAIM_MEMORY=false, it might help find leaks more repeatablyExiting with error code (instead of crashing) because of whole-program memory leaks
这里不细谈文件系统对单单现异常检测,我将专门交友一篇篇名来分析文件系统对单单现异常。
之外视频录用
90分钟探究Linux文件系统对Core,numa的优势,slab的实现,vmalloc的原理
linux文件系统对监管关键问题-如何理单单自己的长处单单来,整合与面试双丰收
努力学习IP:C/C++Linux增个数机整合/于是就开发者【零声普及教育】-努力学习视频教程-百度课堂
并不需要C/C++ Linux增个数机开发者努力学习的资讯赞qun812855908利用(的资讯包内含C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费交友
TCmalloc的一些null和参数我们可以通过null来控制tcmalloc的使用暴力,通常有用的标志。
标志
默认个数
依赖性
TCMALLOC_SAMPLE_PARAMETER
0
采样时间间隔
TCMALLOC_RELEASE_RATE
1.0
释放单单来未曾用到文件系统对的概率
TCMALLOC_LARGE_ALLOC_REPORT_THRESHOLD
1073741824
文件系统对仅有均等阈个数
TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES
16777216
均等给缓存外部的仅有文件系统对上限
微调参数:
TCMALLOC_SKIP_mmap
default: false
If true, do not try to use mmap to obtain memory from the kernel.
TCMALLOC_SKIP_SBRK
default: false
If true, do not try to use sbrk to obtain memory from the kernel.
TCMALLOC_DEVMEM_START
default: 0
Physical memory starting location in MB for /dev/mem allocation. Setting this to 0 disables/dev/mem allocation.
TCMALLOC_DEVMEM_LIMIT
default: 0
Physical memory limit location in MB for /dev/mem allocation. Setting this to 0 means no limit.
TCMALLOC_DEVMEM_DEVICE
default: /dev/mem
Device to use for allocating unmanaged memory.
TCMALLOC_MEMFS_MALLOC_PATH
default: ""
If set, specify a path where hugetlbfs or tmpfs is mounted. This may allow for speedier allocations.
TCMALLOC_MEMFS_LIMIT_MB
default: 0
Limit total memfs allocation size to specified number of MB. 0 means "no limit".
TCMALLOC_MEMFS_ABORT_ON_FAIL
default: false
If true, abort() whenever memfs_malloc fails to satisfy an allocation.
TCMALLOC_MEMFS_IGNORE_MMAP_FAIL
default: false
If true, ignore failures from mmap.
TCMALLOC_MEMFS_MAP_PRVIATE
default: false
If true, use MAP_PRIVATE when mapping via memfs, not MAP_SHARED.
删减TCmalloc的一些使用暴力我们可以通过包内含malloc_extension.h脚文件中所的MallocExtension类提供了一些微调的适配机来删减tcmalloc的使用暴力来使得你的处理程序达到更加高的效率。
默认原因下,tcmalloc将日益的释放单单来长时间未曾用到的文件系统对给内核。tcmalloc_release_rate标志控制收回UNIX文件系统对的速率大,你也可以朔州释放单单来文件系统对通过拒绝执行如下系统对设计:
MallocExtension::instance()->ReleaseFreeMemory();
你同样可以初始化SetMemoryReleaseRate()来在运营时删减tcmalloc_release_rate的个数,或者初始化GetMemoryReleaseRate来提示当前释放单单来的概率个数。
MallocExtension::instance()->SetMemoryReleaseRate(10.0);
// 【0-10】数个数就越,储存起来速率越快,这个并不需要根据自己单项原因次测试给一个最必要的参数。
当然你也可以通过请注意适配机来利用tcmalloc的之外砖脚栈用到原因:
MallocExtension::instance()->GetStats(buffer, buffer_length);MallocExtension::instance()->GetHeapSample(Maxstring);MallocExtension::instance()->GetHeapGrowthStacks(Maxstring);
TCmalloc和PTMalloc的机动性参数对比PTMalloc2包内(现在仍然是glibc的一部分了)包内含了一个单元次测试处理程序t-test1.c。它亦会产生一定存量的缓存并在每个缓存中所同步进行一系列均等和冻结均等;缓存之间没有任何通信除了在文件系统对均等机中所同步。
t-test1(放在tests/tcmalloc/中所,处理程序代码为ptmalloc_unittest1)用一系列相同的缓存存量(1~20)和仅有均等大小(64B~32KB)运营。这些次测试运营在一个2.4GHz ARMXeon的RedHat 9系统对上,并启用了超缓存技术, 用到了Linux glibc-2.3.2,每个次测试中所同步进行一百万次系统对设计。在每个案例中所,一次较长时间运营,一次用到LD_PRELOAD=libtcmalloc.so。
下面的图像显示了TCMalloc对比PTMalloc2在相同的衡量当前下的机动性。首再,现实十度系统对设计次数(百万)以及仅有均等大小,针对相同存量的缓存。用来生产这些图像的原始数据(time工具的编码器)可以在t-test1.times.txt中所找到。
TCMalloc要比PTMalloc2更加具有一致地伸缩性——对于所有缓存存量>1的次测试,小均等达到了有约7~9百万系统对设计十度,大均等降到了有约2百万系统对设计十度。单缓存的案例则突出是要被剔除的,因为他只能保持单个处理机社会活动日因此只能给予更加少的十度系统对设计数。PTMalloc2在十度系统对设计数上有更加高的方差——某些地方峰个数可以在小均等上达到4百万系统对设计十度,而在大均等上降到了<1百万系统对设计十度。TCMalloc在绝大多数原因下要比PTMalloc2快,并且特别是小均等上。缓存间的争用在TCMalloc中所关键问题不大。TCMalloc的机动性随着均等大小的增赞而减低。这是因为每缓存缓存当它达到了阈个数(默认是2MB)的时候亦会被垃圾收集。对于更加大的均等大小,在垃圾收集之前只能在缓存中所存储更加少的实例。TCMalloc机动性在有约32K仅有均等大小附件有一个突出的下降。这是因为在每缓存缓存中所的32K实例的仅有大小;对于大于这个个数得实例TCMalloc亦会自已央页面砖脚中所同步进行均等。下面是十度CPU时间的系统对设计数(百万)以及缓存存量的图像,仅有均等大小64B~128KB。
这次我们再一次看到TCMalloc要比PTMalloc2更加连续也更加高效。对于多缓存的原因下,很多CPU时间被不必要在轮流等待上锁定上了)。
关于TCmalloc的一些说明对于某些系统对,TCMalloc显然很难与没有链接libpthread.so(或者你的系统对上同等的过道)的广泛应用处理程序较长时间社会活动。它应该能较长时间社会活动于用到glibc 2.3的Linux上,但是其他OS/libc的复合手段尚未曾经过任何次测试。
TCMalloc显然要比其他malloc旧版本在同样上更加吃文件系统对,(但是倾向于不亦会有其他malloc旧版本中所显然单单现的紧接著增长。)尤其是在启动时TCMalloc亦会均等至少240KB的内外文件系统对。
不要试图将TCMalloc载入到一个运营中所的十进制处理程序中所(例如,在Ja中所用到JNI)。十进制处理程序仍然用到系统对malloc均等了一些实例,并亦会无论如何将它们传递到TCMalloc同步进行冻结均等。TCMalloc是很难处理这种实例的。
。黄石哪家白癜风医院好莆田正规男科医院
广州医院
新冠买什么药
英太青对腰椎间盘突出好吗
结肠癌
食物寒凉引起肠胃不适怎么缓解好?
回南天湿气重怎么办
上一篇: 生意社:12月9日浙江化工苯酚价格稳定
-
失灵三轮车撞向老人,新入警的他徒手挡车,网友:我想跟他搞对象
在生活中对于另一半来却说很重要。很多女孩子回去男朋友第一承诺就是要有在生活中能够保护自己。在有可能即将来临的时候,新的娘就应该表现出有担当的唯独。把有可能扯在手,这才叫真新的娘。 p
- 2025-05-11老实人接盘?丈夫得知妻子有7任未婚夫后气愤,妻子笑称:你玩不起
- 2025-05-11辞职时,领导知道了一个字“好”,什么意思?
- 2025-05-11相知,有情人终成眷属,最快乐的是生命中有过你的痕迹
- 2025-05-11男人与你约会时,会有以下3个表现,表明他爱你爱的极深,超准。
- 2025-05-11男人一天到晚,给你发这些信息,就是可怕想你了
- 2025-05-11人生至简,感恩无言
- 2025-05-11彩礼35万,女方发圈纪念,7万人评论:35万没男方露面的机会!
- 2025-05-11夫妻彼此间,那些最伤人的话
- 2025-05-11爱就好好爱。要男朋友就不要拖拖踏踏,
- 2025-05-11真心嫁你,擒着过日子去的女人