gpt4 book ai didi

c++ - linux进程调度延迟很长时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:39 28 4
gpt4 key购买 nike

我在 linux 上运行的多线程 c++ 应用程序上完成了 strace

运行几个小时后,大约 12 秒内没有线程运行。

我看到未完成的 select 系统调用超时调用在线程挂起之前未完成,恢复后报告,操作完成需要 11.x 秒。 (超时只有900ms)

这清楚地表明该进程长时间处于饥饿状态。

进程中的所有线程都是使用 linux 的默认调度策略(SCHED_OTHER)和默认优先级创建的。

还有另外 5 个类似的应用程序在同一个盒子上运行,由于在套接字上接收到大量数据,它们也像这个应用程序一样受到大量 I/O 的限制。但大多数时候,这个应用程序会出现预定的延迟。其他应用程序是使用与此相同的计划策略和优先级创建的,即默认值。为什么几乎所有时间都只有这个进程被阻塞?

可能是因为此进程的 I/O 密集度更高,因为数据速率可能更高,因此更忙?那么,这里的 linux 动态优先级调整正在发挥作用,从而插入了这个进程?

最佳答案

Linux中的优先级和进程调度只与CPU时间有关。事实上,Process Scheduler 只关心等待在 CPU 上运行的进程。等待 I/O 的进程/线程不是由 Process Scheduler 处理,而是由 I/O Scheduler 处理。

关于c++ - linux进程调度延迟很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135026/

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