美好的一天! 我有一个fork-on-connect守护进程。在使用perf工具对其进行分析后,我发现了该功能" do_lookup_x"消耗很多CPU时间。共享库函数的所有函数调用都在fork之后。
有没有办法在fork之前查找所有符号?
答案 0 :(得分:1)
设置环境变量[-1.64285714 1.28571429]
应该有助于实现这一点。
用
设置 LD_BIND_NOW
然后执行你的程序。
摘录:
ELF平台(Linux,Solaris,FreeBSD,HP-UX,IRIX等)支持 延迟绑定过程地址,这是一种优化 产生更好的整体性能,但真正的问题 启动后需要统一性能的应用程序(例如:交易 系统。)当ELF应用程序启动时,加载器(默认情况下) 用一堆修复程序初始化过程链接表(PLT) 将在每个函数的第一次调用时运行的代码。在 fix-up call,函数在虚拟地址空间中的位置 查找并放入PLT以便将来调用 功能不需要再次查找。
可能的解决方案:
如果你关心启动后的延迟,你可以做一些事情 做:
export LD_BIND_NOW=1