gpt4 book ai didi

go - 如何查看 runtime.futex 的来源?它只有 "System"作为父级

转载 作者:IT王子 更新时间:2023-10-29 01:19:58 24 4
gpt4 key购买 nike

使用 https://github.com/vimeo/statsdaemon 的 cpu 配置文件运行 go tool pprof并输入“web”,我得到一个广泛使用“runtime.futex”的 svg 配置文件。但我看不到它来自哪里,它只是说“System”。

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

profile screenshot

为了确保我通过了 '-nodefraction=0' 这使得它不会在 web svg View 中删除节点,尽管它说“显示 246 个中的前 80 个节点(cum > = 0.11s)”,也许这是相关的。

我试过了 https://code.google.com/p/gperftools/它显示相同。该可视化项没有删除任何节点或边,但“runtime.futex”仍然只显示在“System”下,这就是根节点?

最佳答案

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

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

关于go - 如何查看 runtime.futex 的来源?它只有 "System"作为父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29885199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com