Multithreading

處理一百萬個文件的執行緒

  • June 22, 2020

處理一百萬個文件應該使用多少執行緒?你如何證明你的回答是正確的?這是去年作業系統考試中的一個問題,我很好奇你們的想法。我認為 10.000 個執行緒和每個執行緒處理 100 個文件將是一個很好的比例。

通常 I/O 是極限。有這麼多執行緒等待 I/O 是沒有意義的。

您可以定義最佳比率,以使 n 個 CPU 核心全時工作且 I/O 為 100%。然後,最佳執行緒數由處理文件所需的時間與讀取輸入和寫入輸出所需的時間之比來定義。

例子:

  • 如果讀取和寫入文件比處理文件花費更長的時間,那麼一個執行緒就足夠了。擁有第二個執行緒/程序以確保始終有可用的 I/O 請求可能是有意義的。不過,第二個執行緒應該以空閒 I/O 優先級執行。
  • 如果處理一個文件所花費的時間是該文件的 I/O 的十倍,那麼十個執行緒將是最佳的。

引用自:https://unix.stackexchange.com/questions/594224