微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我们在Windows上有一个基于C ++的multithreading应用程序,使用WinPCAP库实时捕获networking数据包,然后处理这些数据包以监视networking。 此应用程序旨在运行24×7。 我们的应用程序很容易消耗7-8 GB的RAM。

我们正在观察的问题:可以说应用程序正在监视100Mbps的networkingstream量,并占用60%的cpu。 我们观察到,当应用程序持续运行一两天,应用程序的cpu消耗增加到70-80%,尽pipe它仍在处理100 Mbps的通信量(执行相同的工作量) 。

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

我们发现这个问题很容易在Windows 2012 R2服务器操作系统上过夜运行。 在Windows 7中,这个问题发生,但几天。

如何挂钩Windows中的TCP堆栈以侦听和修改数据包?

零拷贝机制和libpcap

C中的数据包嗅探器适用于所有虚拟机

是否有可能在Linux上使用packet_mmap没有root权限?

SO_ATTACH_REUSEPORT_CBPF套接字选项意外的行为

任何想法可能导致这个?

提前致谢

最佳的OS应用程序出站SMTP数据包捕获?

禁用以太网VLANfilter以启用捕获原始数据包

garena客户端如何build立networking?

内存分配呢? 因为使用大量内存,可能会造成内存分割问题,所以如果您执行多次缓冲区分配/重新分配,这当然会导致处理器寻找和分配可用空间的主要成本。

我终于找到了上述行为的原因:它是导致它的winpcap代码。 替换之后,我们没有观察到这种行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐