我们优先在各种系统上运行一些软件realtime
(SCHED_FIFO
,Priority: 99
),以满足我们工程师所开发的软件的某些框架要求。
我们的一个副项目并不“真正”需要相同的实时性能,但它们需要一些只有在实时运行时才能实现的功能。 IE 帧丢失并不是严重的故障状态,但它们需要尝试并命中才能使某些其他事情正常发生。这是一个令人困惑的混乱。
不管怎样,在实时运行软件的同时,他们还使用系统执行其他快速任务,通常打开终端窗口,运行快速程序,然后Ctrl+d删除终端,然后继续他们的生活。这样做会使应用程序的副本处于不间断的睡眠状态,随着时间的推移,这会耗尽系统资源并锁定系统。如果软件停止,它会立即解决所有这些休眠进程并完成关闭所有内容。
我的想法是,无论运行什么清理进程来完成清理这些进程,系统都无法完成对事物的实时优先级。我意识到“这不是你应该如何使用实时系统”以及所有这些,但不幸的是,这是一个他们拒绝承认这一点的问题,我必须找到一个神奇的解决方案来解决一个简单的问题(不要使用实时系统作为工作站。)
所以我的问题是:有没有办法不时手动强制清理进程优先于最大运行进程?
我曾考虑过尝试尝试cgroups
,但这似乎是解决问题的一个非常复杂的解决方案,而且我不确定它是否真的有效,即使我花时间学习如何很好地使用cgroups
以及各种内核计时统计数据