首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何才能看到runtime.futex是从哪里来的?它只有"System“作为父级

我如何才能看到runtime.futex是从哪里来的?它只有"System“作为父级
EN

Stack Overflow用户
提问于 2015-04-27 08:11:08
回答 2查看 7K关注 0票数 12

使用https://github.com/vimeo/statsdaemon的cpu profile运行go tool pprof并输入"web“,我得到了一个广泛使用"runtime.futex”的svg profile。但我看不出它是从哪里来的,它只写着“系统”。

我想知道我的程序调用了哪些代码,这导致了在runtime.futex上花费了这么多时间。

可以肯定的是,我通过了'-nodefraction=0',这使得它不会在web视图中删除节点,尽管它显示“显示246个节点中的前80个(cum >= 0.11s)",但这可能是相关的。

我尝试过https://code.google.com/p/gperftools/,它显示的是相同的内容。viz没有丢弃任何节点或边,但"runtime.futex“仍然显示在"System”下,这就是根节点?

EN

回答 2

Stack Overflow用户

发布于 2015-04-27 11:26:26

futex或“快速用户空间互斥锁”是用于基本锁定的linux系统调用。我想go运行时会在幕后使用它。

如果看不到一些代码,就很难确定,但对于使用通道进行大量协调的高并发代码,futex调用可能真的来自系统,而不是特定的函数。

票数 8
EN

Stack Overflow用户

发布于 2019-12-09 12:38:56

当我遇到这样的问题时,我使用了runtime/trace,我发现一些函数经常被调用,这个函数通过以下方式创建新的滚动条

代码语言:javascript
复制
ticker := time.NewTicker()

但不会阻止它

代码语言:javascript
复制
defer ticker.Stop()

另外,也不要忘记停止计时器:

代码语言:javascript
复制
timer := time.NewTimer(duration)
defer timer.Stop()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29885199

复制
相关文章

相似问题

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