编程接口指南

调度和系统性能

由于调度器会用于确定何时运行进程以及运行多长时间,因此其行为会严重影响系统的性能。

缺省情况下,所有用户进程都是分时进程。进程只能通过 priocntl(2) 调用来更改类。

所有实时进程的优先级都高于分时进程的优先级。如果任何实时进程都可以运行,则不能运行分时进程或系统进程。有时无法放弃 CPU 控制权的实时应用程序可能会完全禁止其他用户和基本内核内务处理对其进行使用。

除了控制进程类和优先级之外,实时应用程序还必须控制影响其性能的其他因素。性能方面最重要的因素包括 CPU 处理能力、主存储器量和 I/O 吞吐量。这些因素相互作用相互影响。sar(1) 命令包含用于报告所有性能因素的选项。

进程状态转换

具有严格实时约束的应用程序可能需要阻止将进程换出或换页到辅助存储器。下图说明了 UNIX 进程状态以及状态之间转换的简要概况。

图 3–2 进程状态转换图

 正在运行的进程可以通过抢占内存在内存中进入可运行状态,也可以在内存中进行休眠。内存中的进程可以交换。

活动进程通常处于图中的五种状态之一。箭头指示了进程状态如何进行变化。

当进程可以再次运行时,换页和交换都会造成延迟。对于具有严格的时间安排要求的进程而言,这种延迟是不可接受的。

为了避免交换延迟,实时进程永远不能进行交换,尽管某些实时进程可以进行换页。程序可以通过将其文本和数据锁入到主存储器中来阻止换页和交换。有关更多信息,请参见 memcntl(2) 手册页。可以锁定的内存量受限于已配置的内存量。另外,锁定过多内存可能会对未将文本和数据锁入内存的进程造成无法忍受的延迟。

实时进程与其他进程之间的性能权衡取决于局部需求。在某些系统中,可能需要进行进程锁定才能保证必需的实时响应。


注 –

有关实时应用程序延迟的信息,请参见分发延迟