Эта команда загрузит все файлы sql в текущей папке, выполнив 8 параллельно, и удалит каждый файл, если он загружается успешно:
find. -type f -name "*.sql" -print0 | xargs -0 -n1 -P8 sh -c 'cat $0 | mysql -A -u<redacted> -p<redacted> -h<redacted> dbname && rm $0'
(Я не утверждаю, что это лучший способ загрузки sql-файлов, но он решает проблему использования xargs
для массового импорта файлов)
Передача вывода gunzip
инструменту профилирования не даст вам многого, потому что gunzip
не выводит много информации о времени выполнения.
Однако вы можете использовать стандартные инструменты профилирования Linux, такие как perf
. Ознакомьтесь с учебным пособием наhttps://perf.wiki.kernel.org/index.php/Tutorial
Например, вот статистика профиля для распаковки ~100-мегабайтного файла:
$ perf stat -B tar xJf ghc-8.0.2-x86_64-deb8-linux.tar.xz
Performance counter stats for 'tar xJf ghc-8.0.2-x86_64-deb8-linux.tar.xz':
14959.293532 task-clock (msec) # 0.737 CPUs utilized
340822 context-switches # 0.023 M/sec
0 cpu-migrations # 0.000 K/sec
2401 page-faults # 0.161 K/sec
<not supported> cycles
<not supported> instructions
<not supported> branches
<not supported> branch-misses
20.299894777 seconds time elapsed
В зависимости от версии вашего ядра вывод может немного отличаться. Также обратите внимание, что perf
не может быть скомпилирован для понимания всех событий, происходящих в вашем конкретном процессоре. Вот о чем сообщения <not supported>
выше.
Узким местом, вероятно, будет чтение/запись, а не ЦП. В любом случае, время (1 )должно сказать.