在 Ubuntu 上的终端中键入需要几秒钟的时间,直到键入的字符出现

在 Ubuntu 上的终端中键入需要几秒钟的时间,直到键入的字符出现

问题:在 Ubuntu 上的终端中输入需要几秒钟的时间,直到输入的字符出现。

我第一次注意到这一点是在我将大块数据移动到另一个/etc/fstab自动安装的 LUKS 加密硬盘上之后。在终端中输入(我使用的是默认的 bash)反应异常缓慢。一开始我以为问题出在额外的硬盘上,但是当我在新的SSD上重新安装Ubuntu后,问题又出现了,但我根本没有安装硬盘。我不认为这是硬件的问题,因为其他操作系统没有任何问题(三星 990 Pro 上的双启动)。

细节:

  • 全新安装 Ubuntu 22.04.4 LTS,在 Samsung 870 QVO 4TB Sata 6Gb/s 上使用 LUKS 进行全磁盘加密
  • 也可在 Samsung 990 Pro 4TB M.2 vMVE(未加密的 2 TB 分区)上重现
  • 4x8GB RAM @2133 MT/s,至少 15GB 可用空间。
  • CPU:i7-6700K,所有 8 核 < 10% 使用率

我已经尝试过:

  • 设置fs.inotify.max_user_watches为默认值 65536 和高值 1048576 之间的值
  • 多次重启
  • 清除 bash 历史记录
  • 卸载所有设备
  • 关闭所有可能降低 FS 速度的程序(例如 PhpStorm、GitKraken)

我已经检查过了:

  • /var/log/dmesg
  • /var/log/syslog
  • /var/log/kern.log

我遇到了调试缓慢处理的方法并使用了strace -T -f -s9999 -p6673,这是我按向上箭头两次的输出:

pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <1.867761>
read(0, "\33", 1)                       = 1 <0.000091>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <0.000008>
read(0, "[", 1)                         = 1 <0.000007>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <0.000007>
read(0, "A", 1)                         = 1 <0.000007>
write(2, "echo $$", 7)                  = 7 <0.000009>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <0.660089>
read(0, "\33", 1)                       = 1 <0.000024>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <0.000062>
read(0, "[", 1)                         = 1 <0.000040>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <0.000007>
read(0, "A", 1)                         = 1 <0.000007>
write(2, "\10\10\10\10\10\10\10cat /proc/sys/fs/inotify/max_user_watches", 48) = 48 <0.000008>

让我困惑的是第一次pselect6调用,运行时间超过一秒。这绝对是罪魁祸首,但我不知道如何从这里调试问题。

这是我只输入空格的另一个 strace:

strace: Process 6673 attached
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <2.216155>
read(0, " ", 1)                         = 1 <0.000015>
pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) <0.000075>
write(2, " ", 1)                        = 1 <0.000042>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <0.923598>
read(0, " ", 1)                         = 1 <0.000017>
pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) <0.000011>
write(2, " ", 1)                        = 1 <0.000012>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <1.504578>
read(0, " ", 1)                         = 1 <0.000016>
pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) <0.000012>
write(2, " ", 1)                        = 1 <0.000008>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <1.783754>
read(0, " ", 1)                         = 1 <0.000016>
pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) <0.000013>
write(2, " ", 1)                        = 1 <0.000009>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) <1.664852>
read(0, " ", 1)                         = 1 <0.000015>
pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) <0.000078>
write(2, " ", 1)                        = 1 <0.000009>
pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}strace: Process 6673 detached
 <detached ...>

有时pselect6很慢,只有 2.2 秒,有时又很快。

答案1

正如 @muru 指出的,askubuntu 上有一个重复的内容:https://askubuntu.com/questions/1509058/input-delay-on-terminal-ubuntu-22-04-4

xserver-common xserver-xephyr xserver-xorg-legacy xserver-xorg-core xwayland我的问题没有得到解决,但通过升级 4 月 10 日发布的软件包,情况有所好转。apt update && apt upgrade我认为与该错误相关的一些内容已在这些软件包中得到修复。但并没有彻底解决问题

我测试了建议将 mutter 升级到开发版本的答案:https://askubuntu.com/a/1509474/1341824 这个解决了问题,我还摆脱了视觉错误,比如 PhpStorm 中的闪烁

相关内容