Удаление stderr из ls

Чтобы напрямую ответить на ваш вопрос, если вы не используете закрепление ЦП для ручного назначения определенного процесса определенному ЦП, ваша операционная система обычно планирует выполнение задач на том, что она считает «лучшим» ЦП для обработки в данный момент., и вполне возможно, что задача может даже перемещаться между несколькими ядрами ЦП, в зависимости от того, что еще машина делает в это же время.

Практический результат этого состоит в том, что если вы запускаете пять экземпляров вашей программы, они могут работать на пяти отдельных процессорах, но нет гарантии, что они будут работать на разных процессорах. ЦП. Если каждый отдельный процесс использует менее 20% мощности ЦП, то даже возможно (, хотя маловероятно ), что все пять могут работать на одном процессоре.

Чтобы решить вашу более широкую ситуацию, если у вас есть программа, которая обрабатывает несколько файлов и использует лишь небольшое количество ресурсов ЦП, есть большая вероятность, что вашим узким местом является емкость дискового ввода-вывода. Если это так, то для ускорения потребуется более быстрый диск (или больший объем дискового кэша, если вы многократно читаете одни и те же данные )и распараллеливаете их между несколькими процессами и ЦП , что может фактически уменьшить ] производительности, заставляя диск тратить время на переключение между чтением входного файла первого экземпляра (с )и чтением других файлов для каждого из других процессов.

Быстрый и простой способ проверить, не ограничивает ли вас дисковый ввод-вывод, — это cat file_1 file_2 file_3... >/dev/null(, где file_1и т. д. — список всех файлов, обрабатываемых вашей программой ), и сравнить, как долго требуется просто прочитать файлы (без какой-либо обработки )до времени, необходимого для их обработки.

1
21.11.2019, 22:51
2 ответа

Is this stderr that reports the output below?

Да, скорее всего -это зависит от версии ls, которую вы используете но я считаю, что большинство реализаций печатают ошибки в stderr. Избавиться stderr вtcsh:

( ls foo > /dev/tty ) >& /dev/null
2
27.01.2020, 23:29

Всегда можно:

sh -c 'ls foo 2>/dev/null'

Это жульничество?

0
27.01.2020, 23:29

Теги

Похожие вопросы