【发布时间】:2017-03-20 07:30:16
【问题描述】:
我正在分析一些在 OSX 上运行的多进程 nodejs 代码。
我看到了:
[C++]:
ticks total nonlib name
23398 63.6% 63.8% ___mac_get_pid
___mac_get_pid 是什么?它的名字肯定暗示它是一些“在 Mac 上获取 PID”的代码,但时间似乎过长了。
谷歌搜索没有提供任何有用的信息。
【问题讨论】:
-
@closevoter 你能表达你对这个问题的担忧吗?这是一个我正在寻找和回答的合理问题,如果可能的话,我很乐意改进它。
-
Dancrumb,您的分析器是什么以及您是如何启动它的。有没有能够记录调用堆栈的分析器?或者尝试在调试器 (gdb/lldb) 中多次停止应用程序,并在您点击
__mac_get_pid时检查回溯以了解是谁调用了它。您的操作系统是什么,您的应用程序是什么,是否有进程列表功能?您使用哪些库? -
Dancrumb,您的配置文件中还有其他功能吗?你能发布更多的配置文件,包括 C/C++ 和节点函数吗?其中一些可能会给出关于 ___mac_get_pid 的提示;可能它连接到等待某些进程/线程和/或连接(或者可能在此附近出现一些超时)。您使用哪些库/模式将多个进程连接在一起并交换消息?您是否有排序 nodejs 示例来重现这种情况? OSX/macOS 和 nodejs 有哪些版本?
-
@osgx 这一切都可能超出了这个特定问题的范围。为了您的启迪,这是 OSX 上的一个 nodejs 应用程序,它使用本机节点
child_process函数来生成并与多个进程通信。我猜这些调用与 IPC 请求有关。 -
它超越了“什么是”,但它对于“为什么它在配置文件中如此之高”的问题很有用,并且有时会出现这个问题(链接:stackoverflow.com/questions/40456982/…)跨度>