gpt4 book ai didi

c++进程cpu使用率跳转导致检测

转载 作者:太空宇宙 更新时间:2023-11-04 11:41:05 28 4
gpt4 key购买 nike

给定:RHEL 5.3 下的多线程(~20 个线程)C++ 应用程序。在负载下进行测试时,top 显示 CPU 使用率每秒跳跃 10-40%。

设计大多非常简单——大多数线程都实现了事件对象设计模式:线程有一个线程安全的队列,来自其他队列的请求被推送到队列中,而线程只轮询队列并处理传入的请求。已处理的请求导致将新请求推送到下一个处理线程。

进程有多个 TCP/UDP 连接,每个连接都在高负载下接收/发送数据。

我知道我没有提供足够的数据。这是一个相当大的应用程序,我对它的所有部分都不熟悉。它现在通过 ACE 库从 Windows 移植到 Linux 上(用于网络部分)。

假设问题出在应用程序中而不是外部应用程序中,可以使用哪些技术/工具/方法来发现问题。例如,我怀疑这可能是由某些互斥体争用引起的。

最佳答案

我前段时间遇到过类似的问题,以下是对我有帮助的步骤。1) 首先使用 strace 查看应用程序将时间花在哪里执行系统调用。

2) 使用 OProfile 分析应用程序和内核。

3) 如果您使用的是 SMP 系统,请查看 numa 设置,就我而言,这造成了严重破坏。/proc/appPID/numa_maps 将快速查看内存访问是如何发生的。numa 未命中会导致跳跃。

4) 您在您的应用中提到了 TCP 连接。查看 MTU 大小并将其设置为正确的值,然后根据传输的数据类型,适当使用 Nagles 延迟。 Nagles Delay

关于c++进程cpu使用率跳转导致检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3065378/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com