我的 Linux 机器有 16 个处理器和 70 GB 的可用内存,但是当我运行egrep
命令时,该命令使用(通过命令检查top
)100% 的 CPU 和 0.5 的内存:
22391 aime 25 0 22.5g 337m 880 R 100.1 0.5 1094:06 egrep
这意味着 16 个 CPU 中只有 1 个被使用。
我怎样才能提高这里的性能或使用egrep
更多的 CPU?
我实际上是grep
在目录结构中进行 ping 操作,其数据大小为 40 GB。
近似的正则表达式是:
egrep -H -i -R -a -o -n ([[:alnum:]_\.]+@[[:alnum:]_\.]*(xyz|abc)\.com) <dir>
另外,由于我通过 Perl 脚本运行该命令,ForkManager 能在这方面帮助我吗?
谢谢
答案1
CPU 利用率问题根源在于线程。egrep = 1 线程 => 1 CPU。如果您想使用更多 CPU,则需要将任务拆分为 16 个较小的任务。我建议将数据分成 16 个块,并在每个块上运行一个 egrep,并确保每个块分配给不同的 CPU。