- Contents -
MacOS Catalinaにて
"nsurlsessiond" というデーモンプロセスのCPU使用率が、
ずっと高い状態(常に60%以上)になっているので悩まされてきましたが、
ついに解消することができたので記録しておきます。
そのせいで、うちのMacBook Pro (Mid-2012) が、
特に何もしてない状態でも、ファンが全速力で回転するほど熱くなってしまっていた。
対応したときのOSバージョン
10.15.4 (Catalina)
アップルのスレッドに解決法があった
Q: nsurlsessiond, trustd, syslogd high CPU
原因は、ディレクトリのパーミッションがおかしくて、
一時ファイルの作成に失敗しているためだそうな。
結果、trustdというプロセスが上手くファイル作成出来ずに、
nsurlsessiondの処理がループしてしまうというものっぽい。
解消手順
解消した手順を記載しておきます。
aslのログを確認
/var/log/asl 配下のログを確認してみる。
日付が1番新しいものを確認すると良い。
$ ls -lha /var/log/asl
total 1440
drwxr-xr-x 7 root wheel 224B 10 11 00:23 .
drwxr-xr-x 28 root wheel 896B 10 11 00:30 ..
-rw-------+ 1 root wheel 466K 10 10 20:34 2020.10.10.G80.asl
-rw-------+ 1 root wheel 151K 10 11 00:38 2020.10.11.G80.asl
-rw-------+ 1 root wheel 2.9K 10 11 00:38 BB.2021.10.31.G80.asl
drwxr-xr-x 5 root wheel 160B 10 11 00:30 Logs
-rw-r--r--@ 1 root wheel 12B 10 11 00:38 StoreData
2020.10.11.G80.asl
こういったファイルの中身を確認する。
$ syslog -f /var/log/asl/2020.10.10.G80.asl | less
405: mkdir: path=/var/folders/zz/zyxvpxvq6csfxvn_n000010w000087/0/ mode=0755: Operation not permitted.
↑こんなエラーが出力されている場合は、以降の手順で解消する。
私もちょうどこのエラーが出力されていた。
(/var/folders/zz/ 以降のパスはランダムで生成されるディレクトリ名です)
trustdのプロセスを停止
trustdというプロセスを一旦停止させる。
停止するにはkillコマンドを使う。
trustdのプロセスIDを調べましょう。
$ ps aux | grep trustd
_spotlight 879 0.0 0.1 4382316 10236 ?? S 12:24AM 0:00.31 /usr/libexec/trustd --agent
tyabtyab 455 0.0 0.1 4387648 17088 ?? S 12:24AM 0:03.86 /usr/libexec/trustd --agent
_locationd 293 0.0 0.0 4382412 7936 ?? S 12:23AM 0:00.13 /usr/libexec/trustd --agent
root 245 0.0 0.1 4383288 15032 ?? Ss 12:23AM 0:06.96 /usr/libexec/trustd
--agent
というオプションがついてないやつがkillするプロセスですね。
(↑の例だと245がPID)
$ sudo kill -9 <PID of trustd>
停止しても、時間が経つと自動で起動するものです。
ディレクトリ削除
エラーログに出力されていた、
作成に失敗してる親ディレクトリを削除する。
パーミッション設定がおかしいことになってるので、
エラーがでていたディレクトリを削除しましょう。
$ sudo rm -rf /var/folders/zz/<your dir>
前述したエラーログでいうと、
/var/folders/zz/zyxvpxvq6csfxvn_n000010w000087
のディレクトリを削除します。
ディレクトリは、再度trustdプロセスが自動で作り直すのだと思います。
ここまでの手順で、nsurlsessiond のCPU使用率が下がっているはず。
ご苦労さまでした。
用語解説
nsurlsessiondとは
iCloud Driveとファイル同期したり、
バックアップなどするためのデーモンプロセスのようです。
ASLとは
/var/log/asl
のaslとはなにか?
MacOSXのシステムログで、
Apple System Logs の事みたいで、
システムログの管理用にデーモンプロセスが稼働しているようです。
ASLは、/var/log/asl
配下にバイナリログ(.asl)を出力します。
/var/log/system.log
ファイルにもプレーンテキストで出力するみたいです。
.aslファイルは、lessコマンドでなんとなく見ることも出来ますが、
バイナリファイルなので、専用のコマンド syslogを使って見る方が良いでしょう。
syslog -f <.asl file>
trustdとは
MacOSを構成するデーモンプロセスで、
システムの全プロセスの証明書の評価をしてる重要なプロセスみたいです。
https、メール、Keychainなどの証明書を評価・管理するのにこれが使われてるみたいですね。
まとめ
解決後に色々調べてみると、
CatalinaにOSバージョンアップしたときから、おかしかった可能性あり。
私のMacBook Proは、2012年製と言うこともあり。
スペック的に耐えきれずファンが煩いのかなぁと思っていましたが、
今回の対応でとても静かになりました。