gpt4 book ai didi

c++ - 基于 Windows 的 C++ 应用程序随着时间的推移消耗更多的 CPU

转载 作者:可可西里 更新时间:2023-11-01 10:21:52 25 4
gpt4 key购买 nike

我们在 Windows 上有一个基于 C++ 的多线程应用程序,它使用 WinPCAP 库实时捕获网络数据包,然后处理这些数据包以监控网络。此应用程序旨在 24x7 全天候运行。我们的应用程序很容易消耗 7-8 GB 的 RAM。

我们正在观察的问题:假设应用程序正在监控 100Mbps 的网络流量并消耗 60% 的 CPU。我们观察到,当应用程序持续运行较长时间(如一两天)时,应用程序的 CPU 消耗会增加到 70-80%,即使它仍在处理 100 Mbps 的流量(做同样的工作量) .

我们尝试使用 ProcessExplorer 将此问题调试到线程级别,并注意到随着时间的推移,数据包捕获线程开始消耗更多的 CPU。即使重新启动应用程序后,此问题也没有解决。只有重启机器才能解决问题。

我们发现,在夜间运行期间,此问题很容易在 Windows 2012 R2 Server 操作系统上重现。在 Windows 7 中,问题会在几天内发生。

知道是什么原因造成的吗?

提前致谢

最佳答案

内存分配呢?因为您正在使用大量内存,所以它可能是内存碎片问题,因此如果您对缓冲区进行多次分配/重新分配,这当然会导致处理器查找和分配可用空间的主要成本。

关于c++ - 基于 Windows 的 C++ 应用程序随着时间的推移消耗更多的 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26503320/

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