はじめに
Remote-SSHでサーバーに接続したところ、CPU使用率が上がった。
なぜなのか気になったのでQiitaの記事も参考にしつつ、自分でも実際に確かめてみた。
Remote-SSHについて
Remote-SSHは、VS CodeからSSHでリモートマシンに接続するための拡張機能。
接続するとリモート側にVS Code Serverがインストールされ、ワークスペースに関わる処理や拡張機能の多くがリモート側で実行される。
リモート側に置いたファイルを、ローカルでVS Codeを使うのと近い感覚で編集できる(公式ドキュメント)。
Remote-SSHで何が起こるか
AWS EC2インスタンスを立てて試した。
インスタンスタイプはt3.small(vCPU: 2、メモリ: 2 GiB、OS: Amazon Linux)。
まずSSHで接続し、中身を確認する。
[ec2-user@ip-xx-xx-xx-xx ~]$ pwd
/home/ec2-user
[ec2-user@ip-xx-xx-xx-xx ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc .ssh
必要最低限のファイルしかない。
Remote-SSHで接続すると、次のファイルやディレクトリが増えた。
[ec2-user@ip-xx-xx-xx-xx ~]$ pwd
/home/ec2-user
[ec2-user@ip-xx-xx-xx-xx ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc .cache .config .copilot .dotnet .ssh .vscode-server .wget-hsts
[ec2-user@ip-xx-xx-xx-xx ~]$ du -h --max-depth=1 | sort -hr
720M ./.vscode-server
720M .
256K ./.dotnet
12K ./.copilot
12K ./.cache
4.0K ./.ssh
4.0K ./.config
いろいろ増えている。
ほかの項目は小さいが、.vscode-serverディレクトリは約700 MBに達していた。
[ec2-user@ip-xx-xx-xx-xx ~]$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
~~(略)~~
ec2-user 2677 3.0 1.2 45816 24172 ? Sl 07:32 0:00 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3d
ec2-user 2703 0.0 0.0 221388 1888 ? S 07:32 0:00 sleep 180
ec2-user 2704 37.7 1.1 42632 22292 ? Ssl 07:32 0:08 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3d
ec2-user 2711 0.0 0.1 223008 3444 ? S 07:32 0:00 sh /home/ec2-user/.vscode-server/cli/servers/Stable-2
ec2-user 2715 32.2 9.3 1844496 183196 ? Sl 07:32 0:04 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
root 2752 0.0 0.0 0 0 ? I 07:32 0:00 [kworker/u8:0-events_unbound]
ec2-user 2753 50.4 25.3 19186524 495132 ? Sl 07:32 0:06 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 2765 0.0 0.1 223008 3444 ? S 07:32 0:00 sh /home/ec2-user/.vscode-server/cli/servers/Stable-2
ec2-user 2766 0.9 2.9 1459016 57972 ? Sl 07:32 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 2770 8.0 6.1 1786608 121240 ? Sl 07:32 0:01 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
root 2817 0.0 0.0 0 0 ? I 07:32 0:00 [kworker/u8:2]
ec2-user 2818 18.4 8.5 18597140 168032 ? Sl 07:32 0:02 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 2836 1.9 3.6 1563856 71596 ? Sl 07:32 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 2881 1.6 2.7 735888 54084 ? Sl 07:32 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 2902 0.0 0.1 223608 2972 pts/0 R+ 07:33 0:00 ps -aux
その後、Remote-SSHで接続したVS Codeから、約1.6 MBある.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/server-main.jsを開いた。
※ Stable-の後ろにある文字列は、このVS CodeビルドのコミットIDである(VS Code 1.141.0のソースコード)。
[ec2-user@ip-xx-xx-xx-xx ~]$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
~~(略)~~
ec2-user 3538 1.1 1.2 46036 24032 ? Sl 07:45 0:01 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3d
ec2-user 3565 0.0 0.0 221388 1900 ? S 07:45 0:00 sleep 180
ec2-user 3616 11.2 24.9 19814740 487792 ? Sl 07:45 0:12 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 3628 0.2 3.1 1676028 61912 ? Sl 07:45 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 3733 0.7 6.7 1486580 131900 ? Sl 07:46 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
root 3749 0.0 0.3 18212 7420 ? S 07:47 0:00 systemd-userwork: waiting...
ec2-user 3809 64.5 8.0 1549140 158376 ? Rl 07:47 0:01 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 3810 65.5 7.8 1546832 154268 ? Rl 07:47 0:01 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
ec2-user 3823 46.0 5.0 1462448 98728 ? Sl 07:47 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59
root 3830 0.0 0.3 18212 7412 ? S 07:47 0:00 systemd-userwork: waiting...
ec2-user 3831 0.0 0.1 223608 2964 pts/0 R+ 07:47 0:00 ps -aux
この時点で、CPU使用率の高いプロセスが複数見られた。
しばらくすると...

インスタンスが応答しなくなった。
(完)
一体何が起きたのか
先ほどの出力ではプロセス名が省略されていたため、別のインスタンスでコマンド全体が表示されるようにして確認した。
[ec2-user@ip-xx-xx-xx-xx ~]$ ps -auxww
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
~~(略)~~
ec2-user 2380 4.5 1.1 42592 22196 ? Ssl 01:09 0:09 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3ddc372c36762471b7dfad1c --cli-data-dir /home/ec2-user/.vscode-server/cli agent host
ec2-user 2389 0.0 0.1 223008 3384 ? S 01:09 0:00 sh /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/bin/code-server --connection-token=remotessh --accept-server-license-terms --agent-host-bridge-port=37611 --agent-host-bridge-host=127.0.0.1 --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-18d60803-a93d-4a5b-b8ee-58fa312b428e
ec2-user 2393 4.8 8.8 1837528 173444 ? Rl 01:09 0:09 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/server-main.js --connection-token=remotessh --accept-server-license-terms --agent-host-bridge-port=37611 --agent-host-bridge-host=127.0.0.1 --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-18d60803-a93d-4a5b-b8ee-58fa312b428e
root 2430 0.0 0.0 0 0 ? I 01:09 0:00 [kworker/u8:0-events_unbound]
ec2-user 2443 0.0 0.1 223008 3412 ? S 01:09 0:00 sh /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/bin/code-server --socket-path /tmp/code-d0963734-d2e6-4297-a865-7f5c730c471f --agent-host-path /tmp/code-9b0e02b6-3ea9-4ecf-a347-73b218aca8c9 --start-server --accept-server-license-terms --enable-remote-auto-shutdown --without-connection-token
ec2-user 2448 0.5 4.9 1751752 97252 ? Sl 01:09 0:01 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/server-main.js --socket-path /tmp/code-d0963734-d2e6-4297-a865-7f5c730c471f --agent-host-path /tmp/code-9b0e02b6-3ea9-4ecf-a347-73b218aca8c9 --start-server --accept-server-license-terms --enable-remote-auto-shutdown --without-connection-token
ec2-user 2495 1.4 7.8 18569848 152540 ? Sl 01:09 0:02 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=agentHost --logsPath /home/ec2-user/.vscode-server/data/logs/20261009T010913 --user-data-dir /home/ec2-user/.vscode-server/data --telemetry-level all
ec2-user 2513 0.1 3.7 1630992 74176 ? Sl 01:09 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=ptyHost --logsPath /home/ec2-user/.vscode-server/data/logs/20261009T010911
ec2-user 2558 0.2 2.7 735892 53316 ? Sl 01:09 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node_modules/@github/copilot-sdk-linux-x64/prebuilds/linux-x64/copilot-runtime --headless --no-auto-update --log-level info --stdio --no-auto-login
ec2-user 2692 0.9 1.2 46072 24084 ? Sl 01:10 0:01 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3ddc372c36762471b7dfad1c command-shell --cli-data-dir /home/ec2-user/.vscode-server/cli --parent-process-id 2674 --on-host=127.0.0.1 --on-port
ec2-user 2718 0.0 0.0 221388 1884 ? S 01:10 0:00 sleep 180
ec2-user 2838 52.9 25.8 19193216 505124 ? Rl 01:12 0:06 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node --dns-result-order=ipv4first /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=extensionHost --transformURIs --useHostProxy=false
ec2-user 2851 1.7 3.0 1675340 60228 ? Sl 01:12 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=fileWatcher
ec2-user 2888 0.2 0.2 224252 5196 pts/1 Ss+ 01:12 0:00 /bin/bash --init-file /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/vs/workbench/contrib/terminal/common/scripts/shellIntegration-bash.sh
ec2-user 2929 75.3 16.0 1649696 313980 ? Rl 01:12 0:04 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node --max-old-space-size=3072 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/extensions/node_modules/typescript/lib/tsserver.js --serverMode partialSemantic --useInferredProjectPerProjectRoot --disableAutomaticTypingAcquisition --cancellationPipeName /tmp/vscode-typescript1000/f88dd96645e31124b9bd/tscancellation-f0953ad2c2fdbe1887b5.tmp* --globalPlugins @vscode/copilot-typescript-server-plugin --pluginProbeLocations /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/extensions/copilot --locale ja --noGetErrOnBackgroundUpdate --canUseWatchEvents --validateDefaultNpmLocation --useNodeIpc
ec2-user 2931 63.5 15.5 1637736 303568 ? Rl 01:12 0:03 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node --max-old-space-size=3072 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/extensions/node_modules/typescript/lib/tsserver.js --useInferredProjectPerProjectRoot --enableTelemetry --cancellationPipeName /tmp/vscode-typescript1000/f88dd96645e31124b9bd/tscancellation-7d630fb64bfde0af9e0c.tmp* --globalPlugins @vscode/copilot-typescript-server-plugin --pluginProbeLocations /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/extensions/copilot --locale ja --noGetErrOnBackgroundUpdate --canUseWatchEvents --validateDefaultNpmLocation --useNodeIpc
ec2-user 2951 7.6 5.0 1462448 98224 ? Sl 01:12 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/extensions/node_modules/typescript/lib/typingsInstaller.js --globalTypingsCacheLocation /home/ec2-user/.cache/typescript/6.0 --enableTelemetry --typesMapLocation /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/extensions/node_modules/typescript/lib/typesMap.json --validateDefaultNpmLocation
ec2-user 2973 0.0 0.1 223608 2948 pts/0 R+ 01:12 0:00 ps -auxww
特に、tsserver.jsを起動しているプロセスで高いCPU使用率が見られる。
tsserverはTypeScript/JavaScriptの言語サービスで、コードの解析や補完、診断などを担う(VS CodeのTypeScript公式ドキュメント)。
このことから、リモート側で行われた解析が負荷の一因だった可能性がある。
(注)Linuxのpsに表示される%CPUは、プロセスの起動から現在までに使ったCPU時間を経過時間で割った値であり(cputime/realtime)、その瞬間の使用率ではない(psのマニュアル)。したがって、この値だけで特定のプロセスを原因と安直に断定はできないことには注意する必要がある。また、CPU負荷が原因なのかメモリ不足によるスラッシングなのかもこの観察だけでは判断できない。
これをローカルで実行するようにしてみる。
ローカル側のVS Codeのユーザー設定settings.jsonに、次の設定を追加する。
{
~~(略)~~
"remote.extensionKind": {
"vscode.typescript-language-features": ["ui"],
"ms-vscode.vscode-typescript-next": ["ui"]
}
}
"ui"を指定すると、対象の拡張機能をローカル側で実行する(Remote-SSHではUI拡張機能がローカル側で実行されるため、この値を指定する)。
"ms-vscode.vscode-typescript-next"はTypeScriptの先行版を使うための拡張機能なので、インストールしていなければこの項目は不要。
(注)拡張機能の実行場所を強制すると、動作に影響する場合がある。VS Codeの公式ドキュメントでも、通常はテスト目的に限るよう案内されている。常用する場合は、必要な機能が正常に動くか確認する。
設定後、同じファイルを開いてプロセスを確認すると、
[ec2-user@ip-xx-xx-xx-xx ~]$ ps -auxww
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
~~(略)~~
ec2-user 10465 2.6 1.1 46168 22560 ? Sl 05:46 0:01 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3ddc372c36762471b7dfad1c command-shell --cli-data-dir /home/ec2-user/.vscode-server/cli --parent-process-id 10447 --on-host=127.0.0.1 --on-port
ec2-user 10522 0.0 0.0 221388 1888 ? S 05:46 0:00 sleep 180
ec2-user 10523 0.1 1.0 42512 20676 ? Ssl 05:46 0:00 /home/ec2-user/.vscode-server/code-2a59476c9bfcb90b3ddc372c36762471b7dfad1c --cli-data-dir /home/ec2-user/.vscode-server/cli agent host
ec2-user 10530 0.0 0.1 223008 3388 ? S 05:46 0:00 sh /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/bin/code-server --connection-token=remotessh --accept-server-license-terms --agent-host-bridge-port=40121 --agent-host-bridge-host=127.0.0.1 --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-c9d1b943-db24-4165-9cc9-04daaa2ac845
ec2-user 10534 11.7 10.7 1863460 209752 ? Sl 05:46 0:06 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/server-main.js --connection-token=remotessh --accept-server-license-terms --agent-host-bridge-port=40121 --agent-host-bridge-host=127.0.0.1 --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-c9d1b943-db24-4165-9cc9-04daaa2ac845
root 10571 0.0 0.0 0 0 ? I 05:46 0:00 [kworker/u8:3]
ec2-user 10584 0.0 0.1 223008 3452 ? S 05:46 0:00 sh /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/bin/code-server --socket-path /tmp/code-0471564b-f4cc-4e71-99cc-4dbb7c26df67 --agent-host-path /tmp/code-66e505fd-dae6-420d-aa5d-e31e9e792eba --start-server --accept-server-license-terms --enable-remote-auto-shutdown --without-connection-token
ec2-user 10589 1.9 6.2 1790796 122716 ? Sl 05:46 0:01 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/server-main.js --socket-path /tmp/code-0471564b-f4cc-4e71-99cc-4dbb7c26df67 --agent-host-path /tmp/code-66e505fd-dae6-420d-aa5d-e31e9e792eba --start-server --accept-server-license-terms --enable-remote-auto-shutdown --without-connection-token
ec2-user 10636 4.0 8.6 18600944 169388 ? Sl 05:46 0:02 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=agentHost --logsPath /home/ec2-user/.vscode-server/data/logs/20261009T054620 --user-data-dir /home/ec2-user/.vscode-server/data --telemetry-level all
ec2-user 10647 0.7 3.7 1565376 72828 ? Sl 05:46 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=ptyHost --logsPath /home/ec2-user/.vscode-server/data/logs/20261009T054618
ec2-user 10660 0.4 2.3 668304 46040 ? Sl 05:46 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node_modules/@github/copilot-sdk-linux-x64/prebuilds/linux-x64/copilot-runtime --headless --no-auto-update --log-level info --stdio --no-auto-login
ec2-user 10756 36.2 22.8 19125952 447384 ? Sl 05:46 0:08 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node --dns-result-order=ipv4first /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=extensionHost --transformURIs --useHostProxy=false
ec2-user 10768 1.2 3.0 1676284 60352 ? Sl 05:46 0:00 /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/node /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/bootstrap-fork --type=fileWatcher
ec2-user 10804 0.1 0.2 224252 5208 pts/1 Ss+ 05:46 0:00 /bin/bash --init-file /home/ec2-user/.vscode-server/cli/servers/Stable-2a59476c9bfcb90b3ddc372c36762471b7dfad1c/server/out/vs/workbench/contrib/terminal/common/scripts/shellIntegration-bash.sh
ec2-user 10872 0.0 0.1 223608 2976 pts/0 R+ 05:47 0:00 ps -auxww
このときリモート側ではtsserver.js関連のプロセスが見られず、観察した範囲でCPU使用率も下がった。
ファイルを開いたときの動作も体感では軽くなった。
今回の環境では、CSS、HTML、JSON、Markdown、PHPの言語機能も確認できた。
これらについても、サーバー側とローカル側のどちらで動いているか必要に応じて確認すると良いと思われる。
これで大きなJSファイルなどを開いても落ちにくくなった(多分)!
自環境でデフォルトで入ることを確認した拡張機能一覧
言語・編集支援
-
typescript-language-features: JavaScript/TypeScript の補完、定義移動、診断など。 -
css-language-features: CSS/LESS/SCSS の補完や診断。 -
html-language-features: HTML/Handlebars の補完や編集支援。 -
json-language-features: JSON の補完、検証、設定編集支援。 -
php-language-features: PHP の言語機能。 -
markdown-language-features: Markdown の編集・プレビュー支援。 -
ipynb: Jupyter の .ipynb ファイルを開いて表示する基本機能。 -
markdown-math: ノートブック内の Markdown で数式を表示。 -
emmet: HTML/CSS などの省略記法を展開。 -
configuration-editing: 設定・起動構成などの補完や自動修正。 -
extension-editing: VS Code 拡張機能を作る際の編集支援。
AI・GitHub
-
copilot-chat: GitHub Copilot のチャット機能。 -
jsts-chat-features: JavaScript/TypeScript での Copilot 体験を補助。 -
github: VS Code 内の GitHub 関連機能。 -
github-authentication: GitHub の認証を提供。 -
microsoft-authentication: Microsoft アカウントの認証を提供。
Git・検索
-
git: ソース管理ビューや Git 操作を VS Code に統合。 -
git-base: Git 関連の共通機能を提供する内部用コンポーネント。 -
merge-conflict: マージコンフリクトの強調表示や解決コマンド。 -
references-view: 参照検索の結果をサイドバーに表示。 -
search-result: 検索結果タブの強調表示や言語機能。
実行・デバッグ
-
js-debug: Node.js や Chrome の JavaScript デバッグ。 -
js-debug-companion: JavaScript デバッガーのリモートデバッグ補助。 -
debug-auto-launch: Node.js のデバッグ自動アタッチを補助。 -
debug-server-ready: デバッグ中のサーバー起動を検知し、ブラウザーで開く機能。 -
vscode-js-profile-table: JavaScript のプロファイル結果を表形式で表示。 -
npm: npm スクリプトをタスクとして扱う機能。 -
grunt: Grunt タスクのサポート。 -
gulp: Gulp タスクのサポート。 -
jake: Jake タスクのサポート。 -
terminal-suggest: zsh/bash/fish のターミナル入力補完。
表示・接続など
-
media-preview: 画像・音声・動画の組み込みプレビュー。 -
mermaid-markdown-features: Markdown のプレビューやチャットなどで Mermaid 図を表示。 -
simple-browser: VS Code 内で Web ページを表示する簡易ブラウザー。 -
tunnel-forwarding: ローカルのポートを転送し、外部からアクセスできるようにする機能。
ただし、.vscode-serverはリモート側にインストールされるため、その分のストレージを使用することに変わりはない。
また、別のユーザー名でログインすると、.vscode-serverはそのユーザーのホームディレクトリにも置かれるため、ユーザーごとにストレージが必要になる。
さらに今回の出力からは、bootstrap-forkやserver-main.jsなどVS Code Server関連のプロセスが動いていることも確認できた。
その点では、SFTP拡張機能などを使ってローカルのファイルをリモートと同期する方法も選択肢になる。
Remote-SSHを使わない方法ならVS Code Serverやリモートの拡張機能ホストを起動せずに済む一方で、リモート側のファイル保存領域は必要であり、また自動同期の頻度によっては通信量や待ち時間も増える。
用途に応じて選ぶのがよさそう。
少なくとも、Remote-SSHがリモート側で何を動かすのかは理解して使いたいと思った。
おわりに
Remote-SSHの仕組みと、利用時に気をつけたいことをまとめた。
今回の観察ではJavaScript/TypeScriptの言語機能がリモート側で動作しており、tsserverを含む複数のプロセスで高いCPU使用率が見られた。
設定を変えて言語機能をローカル側で処理するようにしたところ、リモート側でtsserverのプロセスが見られなくなり、ps上のCPU使用率も下がった。
リモート側でどの処理がリソースを使っているか調べることは重要だと感じた。
今後Remote-SSHを使うときには、その仕組みについても意識したい。