並列に並べ替えることはできますか?

並列に並べ替えることはできますか?

bzipたとえば、アーカイブ、の並列バージョンですbzip。パフォーマンスを向上させる並列化ツールはありますかsort

答え1

coreutils 8.6(2010-10-15)以降、GNUはsort利用可能な複数のプロセッサを利用するために並べ替えを並列化しました。したがって、この点で改善pigzpbzip2改善gzipなどの追加の改善はできませんbzip2

並列でない場合は、最新バージョンのGNUをインストールしsortてみてください。sortGNUコアツール

GNUソートでは、オプションを使用してスレッド数を制限できます--parallel

答え2

ソートに関して最も有用なものの1つは、スワッピングを減らすためにできるだけ多くのメモリを提供することです。たとえば、次のようになります。

sort -S 20G

答え3

ファイルが十分に大きいと、割り当てられた仮想メモリが大きすぎるか、プログラムsort自体がブロックをディスクにスワップしているため、ソートによってディスクスワップが発生します。以前sortの実装では、これらの「ディスクバッファによるソート」の動作は、過去に大容量ファイルをソートする唯一の方法であったために発生する可能性が高くなります。

sortあなたを助けるためのオプションがあります-m。ファイルを塊に分割する方が速いかもしれません。つまり、split -l独立してソートしてから一緒にマージすることです。

もしそうなら、これは「ディスクバッファによるソート」が行うことです。役に立つことを確認する唯一の方法は、特定のテスト負荷に対してベンチマークすることです。主なパラメータは、ユーザーが提供する行数ですsplit -l

答え4

sort -n科学的表記法を必要とせずに、選択したすべての列に数値(浮動小数点または整数)を必要とすることを使用して、非常に大きな利得を得ました。

プロセスを大幅に改善するもう1つの方法は、/dev/shm中間ファイルにメモリマッピングフォルダを使用することです。

関連情報