Treadpool:确定池大小的等待时间和执行时间的简单示例

时间:2017-02-23 01:14:14

标签: multithreading threadpool

我试图找到确定线程池大小的等待时间和执行时间的简单示例。根据布莱恩·戈茨的说法:

  

对于可能等待I / O完成的任务 - 例如,任务   从套接字读取HTTP请求 - 您将需要增加   池大小超出可用处理器的数量,因为没有   所有线程都将一直在工作。使用分析,您可以   估计a的等待时间(WT)与服务时间(ST)的比率   典型的要求。如果我们将此比率称为WT / ST,则为N处理器   系统,您希望保留大约N *(1 + WT / ST)个线程   处理器得到充分利用。

我真的不明白他的输入/输出是什么意思。谁在做I / O任务。

1 个答案:

答案 0 :(得分:1)

想象一下从磁盘读取一些数据的任务。实际发生了什么:

  1. 打开文件。
  2. 等待(旋转)磁盘从睡眠状态唤醒,将磁头定位在正确的位置,并使所需的块出现在磁头下方,直到所有字节都到达缓冲区。
  3. 从缓冲区中读取。
  4. 整个任务需要0.1秒才能完成。其中0.1%10%用于第1步和第3步,其余90%用于第2步。因此0.01s是“工作时间”,等待磁盘花费0.09s“等待时间”。