吞吐量的操作系统计算

时间:2019-02-26 03:33:20

标签: operating-system

我可以为此寻求帮助吗?我似乎无法理解这个问题

“在此问题中,您将比较使用单线程文件服务器和多线程文件服务器读取文件。它需要16毫秒来获取工作请求,分派并进行其余必要的工作处理(假设数据在块缓存中)。如果需要进行磁盘操作(假设磁盘驱动器的磁头为1头),通常是四分之一的情况,则需要额外的32毫秒。”

1 个答案:

答案 0 :(得分:0)

  

我可以为此寻求帮助吗?

我不这样认为(我认为问题中没有足够的信息让任何人都可以理解)。

示例1

文件服务器是单线程的,并且处理异步请求,“ 16毫秒”主要是“请求传递延迟”(发送请求的过程和接收请求的文件服务器之间的时间)。一个进程发送一个请求以读取1000个文件的请求,文件服务器接收到该请求,“立即”发送回750条答复(对于已缓存的文件数据),并发送一个请求的问题(文件系统代码,磁盘驱动器? )以获取剩余的250东西;然后,文件服务器“立即”等待更多请求,同时等待某件事(文件系统代码,磁盘驱动器?)的答复,以完成250件事。在这种情况下,您可以说单线程文件服务器的吞吐量实际上是无限的(例如,“文件数据高速缓存命中”的吞吐量是无限的,这很重要,因为您可以在等待缓慢的磁盘IO时发出更多请求)。

示例2

文件服务器具有8个线程并处理同步请求。单线程进程发送1个请求(从1个文件中读取),然后必须等待答复,该请求被提供给文件服务器的一个线程(无关紧要),并且该线程平均花费“ 16 + 32 * 0.25 = 24毫秒”,以便在流程可以发出下一个请求之前对其进行处理;并且该过程循环执行此操作,因为它想读取1000个文件。在这种情况下,吞吐量为“ 1 / 0.024 =每秒41.66个请求”,这是非常糟糕的(主要是因为单线程进程无法足够快地发送请求以保持多线程服务器的所有线程繁忙)。 >

示例3

文件服务器具有8个线程并处理同步请求。具有1000个线程的进程从其每个线程发送1个请求(从1个文件读取)。在这种情况下,我们需要知道有多少个CPU(以及调度程序如何工作)来确定有关吞吐量的任何信息。例如。如果只有2个CPU,那么您将不会使8个文件服务器线程同时并行运行。