Назад | Перейти на главную страницу

Может ли изменение tty улучшить скорость компиляции?

Когда я делаю большие компиляции (где угодно, но мой вопрос предполагает Linux), на экран часто выводится много сообщений. У меня вопрос: замедляют ли эти сообщения процесс? И если они это сделают, переключение на другой tty, чтобы они не отображались на экране, уменьшило падение производительности?

Да, конечно, могут.

Из http://www.linuxakesson.net/programming/tty/index.php

Запустите yes в xterm, и вы увидите множество линий «y», проплывающих мимо ваших глаз. Естественно, процесс yes может генерировать строки «y» намного быстрее, чем приложение xterm может их анализировать, обновлять буфер кадра, взаимодействовать с X-сервером для прокрутки окна и т. Д. Как возможно сотрудничество этих программ?

Ответ заключается в блокировке ввода-вывода. Псевдотерминал может хранить только определенный объем данных в своем буфере ядра, и когда этот буфер заполнен и yes пытается вызвать write (2), то write (2) блокируется, переводя процесс yes в состояние прерывания сна, где он остается до тех пор, пока процесс xterm не прочитает некоторые из буферизованных байтов.

То же самое происходит, если TTY подключен к последовательному порту. да, сможет передавать данные с гораздо большей скоростью, чем, скажем, 9600 бод, но если последовательный порт ограничен этой скоростью, буфер ядра вскоре заполняется, и любые последующие вызовы write (2) блокируют процесс (или завершаются с ошибкой с кодом ошибки EAGAIN, если процесс запросил неблокирующий ввод-вывод).

Способ ускорить компиляцию, если вы этого боитесь:

make >&/tmp/log.out & tail -f log.out