首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcmalloc性能差异巨大

tcmalloc性能差异巨大
EN

Stack Overflow用户
提问于 2015-08-19 16:03:51
回答 1查看 549关注 0票数 0

我们的多线程服务器有数百个连接线程,负责IO处理和响应传入的请求。

还有另一个异步线程,它运行相对繁重的任务,时不时地分配很多资源(比如每隔几秒钟)。

一旦我将该线程转换为一个小的线程池(即,这些任务现在每次都从不同的线程运行),我们的服务器通常具有相同的CPU使用率,但它可能会突然达到这样的状态:所有操作的分配花费更多的时间,服务器的总体CPU使用率几乎翻了一番,从2个核心增加到3.7个核心。

到目前为止,我的主要理论是我以某种方式改变了tcmalloc库的访问模式,这导致了随机的CPU提升。为了确认这一理论,我应该在tcmalloc统计数据中查看什么?现在从不同线程(但不是同时)运行的相同代码是否会导致tcmalloc从中央缓存而不是线程缓存分配更多的资源?

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 20:12:19

正如一些评论者所建议的那样,虚假分享可能是问题所在。找出虚假分享是困难的,并且没有得到现有工具的很好支持。我的研究小组发表了这些关于这个主题的研究论文--至少,它们为虚假分享的问题以及为什么它如此隐蔽提供了一个很好的介绍。

与这些研究论文相对应的工具可以在GitHub上找到:SheriffPredator

虽然您可以尝试使用这些工具中的一个来查找问题,但最简单的方法是尝试一下Hoard。Hoard是一种快速、可扩展的malloc替代品,其设计降低了分配器导致的错误共享的风险。如果用Hoard替换tcmalloc不能解决您的问题,那么寻求其他方法可能是有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32089808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档