虚拟控制台 (tty1) 中的输出速度非常慢;可能是图形加速问题

虚拟控制台 (tty1) 中的输出速度非常慢;可能是图形加速问题

前段时间,在一台运行 Ubuntu 的旧电脑上,我注意到虚拟控制台(例如tty1)的输出很慢。这在那里不是什么问题,甚至几乎察觉不到。

但现在我的新笔记本电脑上装有 Manjaro Linux(源自 Arch),有时速度慢得离谱。我认为这与情况不同此处描述和解释,因此我的问题不是重复的。我怀疑是图形加速问题。

我发现该问题受到处理器时钟速度的严重影响。这个视频显示其在 800 MHz 时的情况。

可能相关信息来自dmesg

[    0.474770] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.478826] vesafb: mode is 1920x1080x32, linelength=7680, pages=0
[    0.478827] vesafb: scrolling: redraw
[    0.478828] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.478843] vesafb: framebuffer at 0xa0000000, mapped to 0xffffc90001000000, using 8128k, total 8128k
[    0.661095] Console: switching to colour frame buffer device 240x67
[    0.842325] fb0: VESA VGA frame buffer device
[    2.301199] fb: switching to inteldrmfb from VESA VGA
[    2.363655] fbcon: inteldrmfb (fb0) is primary device
[    2.363698] Console: switching to colour frame buffer device 240x67
[    2.363705] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device

scrolling: redraw部分看起来很有趣,尽管我不确定它有什么意义,因为它说switching to inteldrmfb from VESA VGA

输出fbset -i

mode "1920x1080" 
    geometry 1920 1080 1920 1080 32 
    timings 0 0 0 0 0 0 0 
    accel true 
    rgba 8/16,8/8,8/0,0/0 
endmode 

Frame buffer device information: 
    Name : inteldrmfb 
    Address : 0xa0000000 
    Size : 8294400 
    Type : PACKED PIXELS 
    Visual : TRUECOLOR 
    XPanStep : 1 
    YPanStep : 1 
    YWrapStep : 0 
    LineLength : 7680 
    Accelerator : No

一些额外的测试来记录差异:

  • time python -c "for i in range(100): print(\"hi\")"
    0.03s在虚拟控制台上xfce4-terminal显示 。0.23s

  • time echo -e "\033c"
    0s在虚拟控制台上xfce4-terminal0.14s0.16s

  • time man gpm(并Q在打开时按下)
    立即打开xfce4-terminal3s-4s在虚拟控制台上。

滚动man页面时,这种情况尤其令人沮丧。有趣的是,nano这似乎并没有受到影响。

如何让我的虚拟控制台以适当的速度呈现文本?

答案1

顺便提一句,终端表示任何“电传打字机”设备(串行线、伪终端等)。你所说的是 Linux虚拟控制台。并且滚动速度非常慢,因为最新版本的 Linux 在帧缓冲区中使用图形模式而不是文本模式,但有时不使用图形加速。

因此,请检查您的帧缓冲区设置,并查看是否无法通过使用正确的驱动程序等来使用加速。

编辑:正如视频中看到的那样,问题肯定是通过重新绘制所有内容而导致的未加速滚动,人们可以看到内容移动时的“波浪”。

我也感到困惑,为什么你似乎先使用vesafb(这会减慢非加速滚动)然后 2 秒后inteldrmfb(应该进行加速滚动)。问题可能与开关有关。请dmesg在启动后提供完整输出,将其放入 pastebin 等,然后使用链接编辑问题。

相关内容