我需要用它grep
来解析一个 50GB 的文件,但我的服务器的运行速度非常非常慢。
我想知道如果我用 SSD 替换服务器磁盘,速度是否会更快?升级值得吗?
谢谢。
編輯:
这是我从中获得的iostat
,如何查看 I/O 速度?
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop7 0,00 0,00 0,00 0 0
loop6 0,00 0,00 0,00 0 0
loop5 0,00 0,00 0,00 0 0
loop4 0,00 0,00 0,00 0 0
loop3 0,00 0,00 0,00 0 0
loop2 0,00 0,00 0,00 0 0
loop1 0,00 0,00 0,00 0 0
loop0 0,00 0,00 0,00 0 0
cciss!c0d0 652,87 399,77 3568,25 120296073 1073741823
答案1
是的,如果你想要非常快速地执行 grep,你可以制作一个巨大的 RAMdisk。但你也可以更有效地执行 grep:
1)如果您正在搜索固定字符串,请使用“fgrep”而不是“grep”。
2)除非是 UTF8 文件,否则请像这样启动命令:
LC_ALL=C fgrep ‘somestring’ hugefile.log
https://stackoverflow.com/questions/13913014/grepping-a-huge-file-80gb-any-way-to-speed-it-up
令人惊奇的是它的速度如此之快。
如果这没有帮助并且您有足够的可用线程,请尝试以下操作:
将文件复制到单独的目录中,以便该文件成为该文件夹中唯一的文件,然后在该目录中运行此命令:
查找 . -type f -print0 | xargs -0 -P 4 grep 'somestring' > output.txt
“-P 4”表示它将启动 4 个进程。如果你的 IO 确实有限,那么这将无济于事,但你肯定 SSD 会有所帮助。