如果我的进程在事件之间空闲,为什么延迟会大得多?

时间:2013-10-30 02:10:33

标签: c++ linux performance optimization latency

我有一个在套接字上被阻止的进程。当输入在套接字中变为可用时,进程对输入进行解码,并且大多数时间除了更新内存结构外什么都不做。定期输入使得触发更复杂的分析,最终导致另一连接上的传出消息。我希望在后一种情况下最小化延迟,即最小化接收和发送之间的时间。我注意到,当有趣事件之间的时间增加时,延迟数量会差2倍。这可归因于什么?我如何才能改进它?我曾尝试为我的流程预留一个CPU,但我没有看到太多改进。

1 个答案:

答案 0 :(得分:0)

你应该尝试将这个过程“很好”为负值。我不详细了解Linux调度程序,但正常的策略是在进程无法使用其切片时减少时间片(有时是量子),反之亦然。这称为多级反馈政策。在你的情况下,获得一堆快速处理的事件可能会给这个过程带来非常短的时间片。当发生“重大”事件时,它必须通过多个上下文交换逐步实现更长的切片。将“nice”值设置得足够高可能会为它提供所需的时间片。

不幸的是,“负面的好处”在大多数系统中都需要超级用户权限。