2017-02-23 40 views
0

我正在嘗試查找確定線程池大小的確切等待時間和執行時間的簡單示例。據布賴恩戈茨:Treadpool:確定池大小的等待時間和執行時間的簡單示例

對於任務可能等待I/O完成 - 例如,讀取插座的HTTP請求任務 - 你會想增加 池大小超出可用處理器的數量,因爲不是所有線程都會在任何時間工作。使用分析,您可以估算 典型請求的等待時間(WT)與服務時間(ST)的比率。如果我們把這個比率稱爲WT/ST,那麼對於一個N處理器系統,您將需要大約N *(1 + WT/ST)個線程來保持處理器被充分利用。

我真的不明白他的意思是輸入/輸出。誰在做I/O任務。

回答

1

想象一下從磁盤讀取一些數據的任務。究竟發生了什麼:

  1. 打開文件。
  2. 等待(旋轉)磁盤從睡眠中醒來,將磁頭定位在正確的位置,並使所需的磁塊出現在磁頭下方,直到所有字節到達緩衝區。
  3. 從緩衝區讀取。

整個任務需要0.1s完成。在這個0.1s中,10%用於步驟1和3,其餘的90%用於步驟2.因此0.01s是等待磁盤花費的「工作時間」和0.09s「等待時間」。