我在探查器输出中看到的 __nss_passwd_lookup() 调用是什么?

Mic*_*tor 5 c++ linux linux-kernel gperftools

我正在使用gperftools来分析一个 C++ 应用程序,该应用程序是使用 GCC 5.4.0(使用 -O3)编译的。

代码高度优化,所以我在输出中没有看到很多分支,但是有一个名为__nss_passwd_lookup()的分支,它需要大量时间:

在此处输入图片说明

我唯一的猜测是它以某种方式与内存分配有关。

操作系统:Ubuntu 16.04 x86_64,内核:4.8。

Ali*_*nka 1

glibc 中的某些汇编函数偶尔会出现此问题(例如 memcpy 或 memset)。考虑安装 libc6-dbg 包。另请尝试 golang 版本的 pprof 工具(转到 github.com/google/pprof)。

  • 您能澄清一下“这个问题”是什么吗? (2认同)
  • 我的意思是我看到 glibc 中的 asm 函数(例如 strlen)被错误地报告为 __nss_<whatever>。我从来没有费心去弄清楚为什么。 (2认同)