VSCode Remote SSH终端显示延迟(卡顿)的解决方法

2021-06-04

< view all posts

在自己电脑上用着很流畅的VSCode Remote SSH终端在公司的电脑上却有明显的延迟。具体表现为在控制台输入一行命令,经常是输入完了之后才缓慢地显示在屏幕上,快速移动光标的时候还有时会出现光标错位的情况。以及在stdout打印大段内容的时候也有明显的卡顿感。

首先在GitHub上找到了类似问题的Issue: Integrated terminal very slow。里面提到的一个解决方法是,调整rendererType这个设置为"dom"以外的值,如改为"auto"、"experimentalWebgl"或"canvas":

"terminal.integrated.rendererType": "auto"

但是打开自己的VSCode(版本1.56.2),找不到名为rendererType的这个设置项。之后继续查找,发现在某次更新中,rendererType配置项被改成了gpuAcceleration。

关于gpuAcceleration的具体作用,在此issue里有相关的说明。这里简单概况一下,VSCode在新版本中会默认使用Webgl作为终端的渲染引擎,而当GPU加速关闭时则会使用dom渲染。

在办公电脑上关闭了GPU加速,发现终端延迟和卡顿的问题明显好转:

"terminal.integrated.gpuAcceleration": "off"

总结一下,因为办公电脑其实没有GPU,用Webgl的渲染性能非常烂,因此关闭了GPU加速,使用dom渲染,性能得到了提升。而对于上面提到的issue当中的一些用户,他们用dom渲染的性能很差,换成Webgl或canvas渲染之后性能提升了很多。可以看出这是一个需要结合机器的具体情况去解决的问题,不同的机器可能最适合的设置是不同的。

最后,如果终端还是有点卡,还可以尝试以下的设置:

"terminal.integrated.allowChords": false,
"terminal.integrated.drawBoldTextInBrightColors": false,
"terminal.integrated.experimentalLinkProvider": false,
"terminal.integrated.enableFileLinks": false

以及使用 --disable-renderer-accessibility 参数启动VSCode。