Sté*_*las 13
从 coreutils 8.6 (2010-10-15) 开始,GNUsort
已经并行排序以利用可用的多个处理器。因此,它不能在这方面进一步改进,例如pigz
或pbzip2
改进gzip
或bzip2
。
如果您sort
不是并行的,您可以尝试sort
从最新版本的GNU coreutils安装GNU。
使用 GNU sort,您可以使用该--parallel
选项限制线程数。
小智 8
总是对我最有帮助的一件事是给它尽可能多的内存,以减少交换,例如:
sort -S 20G
Run Code Online (Sandbox Code Playgroud)
如果您的文件足够大,排序将导致磁盘交换,要么是因为分配的虚拟内存增长得太大,要么是因为sort
程序本身正在将块交换到磁盘并返回。较旧的sort
实现更有可能具有这种“通过磁盘缓冲区排序”的行为,因为它是过去对大文件进行排序的唯一方法。
sort
有一个-m
选项可以帮助您。将文件分成块可能会更快——比如用split -l
——对它们进行独立排序,然后将它们合并在一起。
再说一次,这可能正是“通过磁盘缓冲区排序”所做的。确定它是否有帮助的唯一方法是在您的特定测试负载上对其进行基准测试。关键参数将是您提供给 的行数split -l
。