CPU使用率和心跳

时间:2013-07-18 21:57:59

标签: c# asynchronous timer cpu-usage

我构建了一个网络层,该层使用SAEA套接字命令处理IOC容器的多个连接。此网络层使用一种心跳形式,通知服务器客户端感兴趣的主题。

我的问题是,有时在网络层之上运行的其中一个进程会占用CPU。这可以防止心跳被及时调用,服务器将看到来自客户端的订阅。我正在使用System.Threading.Timer来运行心跳发送。

事实证明,违规过程是数学计算,而不是IO限制(我的同事从DB预加载数据,奇迹般地不会堵塞网络。)他正在使用Parallel.For循环来进行计算,并且你可以看到CPU使用率在它到达循环时跳跃。

我尝试了几件事,没有运气:

  1. 简单地减少循环上的MaxDegreeOfParallelism。
  2. 添加优先级较低的调度程序,如下所示:http://blogs.microsoft.co.il/blogs/bnaya/archive/2011/01/29/how-to-schedule-task-on-different-thread-priority.aspx
  3. 确保心跳消失的其他策略是什么?与耗尽CPU的数学函数相比,它确实没什么用。

0 个答案:

没有答案