我使用gperftools來剖析C++應用程序,該應用程序使用GCC 5.4.0(使用-O3)進行編譯。什麼是我在profiler輸出中看到的__nss_passwd_lookup()調用?
代碼是高度優化的,所以我沒有看到很多分支的輸出,但有一個叫__nss_passwd_lookup()分支,這需要時間顯著量:
我唯一的猜測是它與內存分配有關。
操作系統:Ubuntu 16.04 x86_64,內核:4.8。
我使用gperftools來剖析C++應用程序,該應用程序使用GCC 5.4.0(使用-O3)進行編譯。什麼是我在profiler輸出中看到的__nss_passwd_lookup()調用?
代碼是高度優化的,所以我沒有看到很多分支的輸出,但有一個叫__nss_passwd_lookup()分支,這需要時間顯著量:
我唯一的猜測是它與內存分配有關。
操作系統:Ubuntu 16.04 x86_64,內核:4.8。
glibc中的某些程序集函數偶爾會出現此問題(例如memcpy或memset)。考慮安裝libc6-dbg軟件包。另請嘗試golang版本的pprof工具(去獲取github.com/google/pprof)。
你能澄清一下「這個問題」是什麼嗎? –
我的意思是我見過glibc的asm函數,比如strlen被錯誤地報告爲__nss_。我從來不打算弄清楚爲什麼。 –
您可以試試[*此*](http://stackoverflow.com/a/378024/23771)。 –