Dip*_*hta 7 linux multithreading profiling
我们有一个多线程应用程序,它在多个流水线阶段都有大量的数据包处理.该应用程序在Linux下的C语言中.
整个应用程序工作正常,没有内存泄漏或线程安全问题.但是,为了分析应用程序,我们如何分析和分析线程?
特别是我们感兴趣的是:
有哪些最好的技术和工具?
1)不知道。有一些适用于 Linux 的分析器。
2) 如果您正在使用管道,每个阶段都应该做足够的工作,以确保 PC 队列上的争用最小化。您可以通过一些计时来挖掘这一点 - 如果一个阶段需要 10 毫秒以上来处理数据包,您就可以忘记争用/锁定问题。如果需要 100uS,您应该考虑合并几个阶段,以便每个阶段做更多的工作。
3) 与 (2) 相同,除非某些全局数据或其他数据存在单独的同步问题。
4)每秒转储/记录队列计数会很有用。最长的队列将在脖子最窄的舞台前。
5) 不知道 - 不知道你当前的系统是如何工作的,它运行在什么硬件上等等。有一些“正常”的优化 - 消除对象池的内存管理器调用,向 CPU 负载最重的阶段添加额外的线程,诸如此类的事情,但是“我们可以获得的最佳系统吞吐量是多少”——太虚幻了。