2018年3月28日水曜日

High Sierra 10.13.3/10.13.4でBrackets/Atom/VS Codeが重い問題を解決する。


お久しぶりです。どうにも継続力が無いんでブログは放置してしまう。

今回はちょっとしたトラブルシューティング。macOS High Sierra 10.13.3の環境で、Brackets / Atom / Visual Studio Code等のElectron系エディタ(あるいはElectron系アプリケーション)の動作が非常に重くなる問題に遭遇したので解決方法をメモっておきます。

結論から言うと、NVIDIA Web Driver利用の環境の場合10.13.2用ドライバにバージョンダウンすることで解決します。なのでもし非Web Driver環境で重い場合は解決しません。

経緯から書いていくので、詳細な対処法だけ確認したい場合は後半まですっ飛ばしてください。

【2018/3/31更新】 
High Sierra 10.13.4アップデートが提供されましたが、10.13.3と同様の症状・解決策でした。末尾に追記しています。



Bracketsが重い


普段自分はコーディングやちょっとしたメモにAdobeのBracketsというエディタを使っているんですが、ここ1ヶ月くらい?のどこかで動作が異常にもっさりして使い物にならなくなってしまいました。どれくらい重いかというとカーソルの移動やテキスト選択、ファイル切り替えもワンテンポ以上待たされるレベル。

Bracketsが重くなるときは大抵Extensionが悪さをしているので、1個ずつOFFにしていけば原因がわかるものなんですが、今回はExtensionを全てアンロードしても相変わらず重い。

ちょうどマイクラに没頭してコーディング頻度が下がっていた時期に被っていたこともあり、重くなった契機がすぐには思い浮かびませんでした。


バージョンアップ周りの確認


とりあえず、Bracketsのバージョンを1つ前の1.11に落としてみたが重いまま。1.11は昨年9月リリースなのでBracketsのバージョンアップは関係なさそう。

macOSについては、記事書けてませんが年末年始にX299E-ITX/acマシンをメインHackintosh化した際にHigh Sierraを入れていて、少なくともこの時点ではBracketsはちゃんと動いてました。しかし、10.13.3アップデートについては怠惰で出てすぐ追従してなかったこともあり時期的に怪しい。

結果的に「10.13.3が怪しい」はほぼ正解だったわけですが、この時点では「10.13.3 Brackets」とかで検索してもそれっぽいのは引っかからず原因にたどり着けませんでした。


Electron系で全滅


コーディング頻度が下がっておいて言うのもなんですが、エディタが使えないと相当に困るので当面の解決を諦めてBrackets以外のエディタを探すことにしました。

Brackets導入当時出たばかりで拡張性も低かったVisual Studio Code(VS Code)とかが今どんな感じなのかといったことにも興味があったので、いろいろ試してみようという思いもあり。

しかしここで意外な事態に直面します。VS Codeも重い。これに至ってはクリーンインストールなので設定が汚れていて重くなっているはずもないのに。

困った、となるところなんですが逆にこれがヒントに。BracketsとVS Codeの共通点はElectron系エディタであるということです。原因がちょっと見えてきました。

そこで同じElectron系、というか元祖であるAtomもインストールしてみたらやはり重い。ついでに非Electron系であるSublime Textを入れてみたらこっちはサクサクだったので、Electron周りの問題だなと確信しました。


Web Driverを疑う→せいかい


High Sierra 10.13.3でElectron系エディタが重くなる原因・・・と考えるとあんま根拠はないんですがGPUレンダリング周りが怪しい気がしてきました。Web系のアプリケーションはレンダリングのチューニングに勤しんでいる印象を持っているので。

この環境ではGeForce GTX 970を載せていて、Maxwell以降のNVIDIA GPUをmacOSで動かすためにNVIDIAのWeb Driverが必要となります。このWeb DriverはmacOSのマイナーバージョン(どころかビルド)と1対1対応しているので、macOSをアップデートした時点でWeb Driverもバージョンアップしていることになります。なので怪しい。

それで軽く調べてみたらビンゴこちらのブログに詳しかったのですが、どうやら10.13.3用のWeb Driverは性能が劣化しているらしく、普段遣いでは(CPUの馬力が効くのか)「言われてみれば」程度にしか感じなかったのですがElectron系エディタではモロに影響が出たようです。


バージョンダウンする


ということで、Web Driverを10.13.2用のものにバージョンダウンしてみます。

ただ、前述の通りWeb DriverはmacOSのビルド番号と1対1なのでそのままでは入りません。入れるためには
  • Web Driverのインストーラーpkgを編集してバージョンチェックを飛ばす
  • インストール後、ドライバkextのInfo.plistを編集するかCloverでパッチを当ててバージョンチェックを外す
という2つの手順が必要となります。

が、これらを自動でやってくれるwebdriver.shというスクリプトがあったので今回はこちらを利用します。

使い方としては、最新版をダウンロードしてきて
$ sudo sh webdriver.sh -u https://images.nvidia.com/mac/pkg/378/WebDriver-378.10.10.10.25.106.pkg
Password:
URL: https://images.nvidia.com/mac/pkg/378/WebDriver-378.10.10.10.25.106.pkg
Install? [y/N]
Downloading package...
######################################################################## 100.0%
SHA512: 3c18fa6135c202ba3045630b4716857622ecfdbad615ed8413f3ccc493aa290a650f92c9a8c94af503bd2b6b29723314290da92dfebee388e03d78b27dc0556d
Extracting...
387199 blocks
Approving extensions...
Installing...
Modify installed driver for the current macOS version? [y/N]
NVDAStartupWeb.kext: 17C2205 -> 17D102
Updating caches...
Installation complete. You should reboot now.

こんな感じでInstall / Modify両方の質問でyを押して完了した後再起動するだけです。普段からgit使ってる場合はzipを落とさずgit cloneしてから叩いても可。

-uで渡すURLが10.13.2用のドライバURLです。ここから取ってきました。例によってビルド番号ごとに別れていますが多分中身は同じなので最後の106の部分はなんでも良いと思います。

あとから気づいたんですが、
$ sudo sh webdriver.sh --list
Checking for updates...
Current driver: 378.10.10.10.25.106
Running on: macOS 10.13.3 (17D102)

     1.  387.10.10.10.25.160  17D2102
     2.  387.10.10.10.25.161  17D102
     3.  387.10.10.10.25.157  17D2047
     4.  387.10.10.10.25.156  17D47
     5.  378.10.10.10.25.106  17C2205
     6.  378.10.10.10.25.105  17C2120
     7.  378.10.10.10.25.104  17C205
     8.  378.10.10.10.25.103  17C89
     9.  378.10.10.10.25.102  17C88
    10.  378.10.10.10.20.109  17B1003
    11.  378.10.10.10.20.108  17B1002
    12.  378.10.10.10.20.107  17B48
    13.  378.10.10.10.15.121  17A405
    14.  378.10.10.10.15.114  17A365

What now? [1-14] :

として入れたいバージョンの数字を選べばURLを調べなくても入れられたみたいですね。

やや雑な説明でしたが、Hackintosh組んでWebDriver入れてるような人はこれくらいでも伝わるでしょう。


というわけで


バージョンダウンしてもダメだったら悲しかったですが、期待通り元の快適なBracketsが戻ってきてくれました。一安心。

もちろんVS CodeもAtomもサクサクになったので、これらのElectron系エディタが重くなって困っている場合も解決するはずです。

ただパッチ当てて旧ドライバを入れている状態にはなってしまったので、この状態がずっと続くと困ります。10.13.4が出たときのWeb Driverではちゃんと動くと思いたいですね・・・→ダメでした。後述。


【追記】10.13.4でも解決せず


2018/3/30にHigh Sierra 10.13.4アップデートが提供され、翌日には10.13.4向けWeb Driverも提供されましたが、解決していませんでした。

10.13.4向けのWeb Driverもバージョン接頭辞は387で変わっておらず、要求OSバージョンが異なるだけで実質的には10.13.3向けドライバと同じもののようです。

一方で、今回の対応策は10.13.4でも有効で、10.13.2向けの378系ドライバを入れることで動作しました。ただ、10.13.4を入れることでOSのビルド番号が変わるため、10.13.3で対応済みであってもNVDAStartupWeb.kextのInfo.plistを修正するか、webdriver.shから同一ドライバを再度入れ直す必要があります。

0 件のコメント:

コメントを投稿