改变tty可以提高编译速度吗?

改变tty可以提高编译速度吗?

当我进行大型编译时(任何地方,但我的问题假设是 Linux),许多消息通常会输出到屏幕上。我的问题是,这些消息会减慢进程吗?如果会,切换到不同的 tty 以便它们不会显示在屏幕上是否会降低性能?

答案1

是的,他们当然可以。

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

在 xterm 中运行 yes,您将看到许多“y”行从您眼前掠过。当然,yes 进程生成“y”行的速度比 xterm 应用程序解析它们、更新其帧缓冲区、与 X 服务器通信以滚动窗口等的速度要快得多。这些程序如何协作?

答案在于阻塞 I/O。伪终端只能在其内核缓冲区中保存一定量的数据,当该缓冲区已满并且 yes 尝试调用 write(2) 时,write(2) 将阻塞,将 yes 进程移至可中断睡眠状态,并一直保持该状态,直到 xterm 进程有机会读取一些缓冲的字节。

如果 TTY 连接到串行端口,也会发生同样的事情。yes 将能够以比 9600 波特高得多的速率传输数据,但如果串行端口限制在该速度,则内核缓冲区很快就会被填满,并且任何后续的 write(2) 调用都会阻止该进程(或者如果进程请求非阻塞 I/O,则会失败并显示错误代码 EAGAIN)。

答案2

如果您担心这个问题,可以采用以下方法来加快编译速度:

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

相关内容