据外媒 Phoronix 报道,Red Hat 工程师偶然发现 Linux 串行控制台的性能非常低下,因此在 Linux 5.17 内核中引入了一些等待处理的改进补丁,以改进串行控制台吞吐量。
Red Hat 的 Wander Lairson Costa 注意到其 HP Proliant DL380 Gen9 服务器的串行控制台吞吐量远低于预期:预期是 10KB/s,但当前 Linux 内核只有 2.5KB/s 左右。Linux 8250 串行控制台驱动程序仅调度一个字节就需要大约 410 微秒。
Wander 借助 Linux 8250/16550 串行端口控制台驱动程序来提高其性能,16550 串口具有芯片 FIFO 缓冲区,现在 8250 串行驱动程序的写入操作(write)会使用该缓冲区(在支持的系统上)。通过此补丁可以使用受支持的 16550 串口 FIFO 缓冲区,受影响系统上的 8250 控制台驱动程序的串行控制台,吞吐量性能提高了约 25%。
该补丁由 Greg Kroah-Hartman 作为Linux 5.17 合并窗口的 TTY/串行更新的一部分发送,此外还有 TTY 代码清理等工作,还修复了在 TTY 控制台与桌面之间使用 Ctrl + Alt + Fn 键切换时,键盘锁定 LED 变得不一致的长期问题。
本文转自OSCHINA
本文标题:Linux 串行控制台的驱动程序补丁实现约 25% 的性能提升
本文地址:https://www.oschina.net/news/178244/linux-serial-16550-uart-fifo