据外媒 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
来源: http://os.51cto.com/art/202201/698971.htm