工作负载多处理
在快速计算机上运行繁重工作负载的多程序设计操作系统给人的感觉印象是有几件事情在同时发生。
事实上,很多费力的工作负载在任意给定时刻并没有大量的可分派线程,即使是当它运行在一个序列化相对来说不是大问题的单处理器系统中时。 除非至少总是有与处理器一样多的可分派线程,要不然总有一个或多个处理器在一部分时间里闲置。
可分派线程的数量是系统中线程的总数
- 减去正在等待 I/O 的线程数,
- 减去正在等待共享资源的线程数,
- 减去正在等待另一个线程结果的线程数,
- 减去正对它们自己的请求睡眠的线程数。
工作负载据说是可以多处理的,从这一点来说,它不论何时都显示出与系统中的处理器数一样多的可分派线程数。 请注意,这并不只意味着可分派线程的平均数量和处理器一样多。 如果可分派线程数在一半时间里为零,剩余时间里是处理器计数的两倍,那么可分派线程的平均数将等于处理器数,但是系统里任一给定的处理器只能在一半时间里工作。
增加工作负载的多处理性涉及到以下的一个或两个方面:
- 确认并解决引起线程等待的任何瓶颈
- 增加系统中的线程总数
这些解决方案不是独立的。 假如有一个单独的、主要的系统瓶颈,增加现有的通过该瓶颈的工作负载的线程数将只会仅仅增加线程等待的比例。 假如目前没有瓶颈,增加线程数可能会创建一个瓶颈。