前段时间,在一台运行 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-terminal
。0.14s
0.16s
time man gpm
(并Q在打开时按下)
立即打开xfce4-terminal
,3s
-4s
在虚拟控制台上。
滚动man
页面时,这种情况尤其令人沮丧。有趣的是,nano
这似乎并没有受到影响。
如何让我的虚拟控制台以适当的速度呈现文本?
答案1
顺便提一句,终端表示任何“电传打字机”设备(串行线、伪终端等)。你所说的是 Linux虚拟控制台。并且滚动速度非常慢,因为最新版本的 Linux 在帧缓冲区中使用图形模式而不是文本模式,但有时不使用图形加速。
因此,请检查您的帧缓冲区设置,并查看是否无法通过使用正确的驱动程序等来使用加速。
编辑:正如视频中看到的那样,问题肯定是通过重新绘制所有内容而导致的未加速滚动,人们可以看到内容移动时的“波浪”。
我也感到困惑,为什么你似乎先使用vesafb
(这会减慢非加速滚动)然后 2 秒后inteldrmfb
(应该进行加速滚动)。问题可能与开关有关。请dmesg
在启动后提供完整输出,将其放入 pastebin 等,然后使用链接编辑问题。