百万個のファイルを処理するスレッド [閉じる]

百万個のファイルを処理するスレッド [閉じる]

百万のファイルを処理するには、いくつのスレッドを使用する必要がありますか?あなたの答えをどのように正当化しますか?昨年のオペレーティングシステム試験に出てきた問題ですが、皆さんの考えが気になります。 10,000個のスレッドがそれぞれ100個のファイルを処理するのが良い割合だと思います。

ベストアンサー1

通常、I/O は制限です。 I/Oを待つスレッドが多すぎても役に立ちません。

n個のCPUコアがフルタイムで動作し、I / Oが100%になるように最適な比率を定義できます。次に、最適なスレッド数は、ファイルを処理するのに必要な時間と、入力を読み取って出力を書き込むのに必要な時間の比として定義されます。

例:

  • ファイルを読み書きするのにファイルを処理するよりも時間がかかる場合は、1つのスレッドで十分です。常にI / O要求を使用できるように2番目のスレッド/プロセスを持つことが合理的である可能性があります。ただし、2番目のスレッドはアイドルI / O優先順位で実行する必要があります。
  • ファイルの処理にファイルI / O時間の10倍かかる場合は、10のスレッドが最善の選択になります。

おすすめ記事