1

Мне нужно использовать grep для анализа файла размером 50 ГБ, и это очень медленно на моем сервере.

Интересно, будет ли быстрее, если я заменю свой серверный диск на SSD? Стоит ли обновление?

Благодарю.

Отредактировано:

Это то, что я получил от iostat , как посмотреть скорость ввода / вывода?

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 ответ1

3

Да, и если вы хотите действительно быстро выполнить grep, вы можете создать огромный RAM-диск. Но вы также можете использовать grep более эффективно:

1) Если вы ищете фиксированную строку, используйте «fgrep» вместо «grep».

2) запустите вашу команду, например, если это не файл UTF8:

LC_ALL = C fgrep 'somestring' largefile.log

https://stackoverflow.com/questions/13913014/grepping-a-huge-file-80gb-any-way-to-speed-it-up

Замечательно, насколько это быстрее.

Если это не помогает, и у вас достаточно свободных тем, попробуйте это:

Скопируйте ваш файл в отдельный каталог, чтобы это был единственный файл в этой папке, и выполните эту команду в этом каталоге:

находить . тип f -print0 | xargs -0 -P 4 grep 'somestring'> output.txt

«-P 4» означает, что он запустит 4 процесса. Если вы действительно ограничены IO, это не поможет, но вы уверены, что SSD поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .