#ファンが止まらない
Dropbox デバイス数制限への対策で取り上げたように、MacOSも含めてOneDriveへの依存度を高めていたところ今回の問題にぶち当たった。
使用環境はざっと以下のような感じ
[Mac]
MacOS Mojave 10.14.6
MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports)
2.4 GHz Intel Core i5
16 GB 2133 MHz LPDDR3
Intel Iris Plus Graphics 655 1536 MB
[OneDrive]
19.192.0926.0012
ここ最近OneDriveを仕事で使うことが増えたのだが、ファイルを更新して同期が発生するたびに半端ないCPU使用率で本体が発熱する事態に見舞われている。ファンが五月蠅いだけで済まず、Web会議のアプリが煽りを食らってフリーズしたり実害も出てきたことから、少し調べてみた。
アクティビティモニタでは disnoted というプロセスが暴走しているようだ。これは結構有名な問題で、5年くらい前からずっとあるらしい。ただしOneDriveそのものの暴走というより、Emacsなどでも発生するようなので、macOS側の問題と切り分けが難しいようだ。この問題について未だにMicrosoftからの修正は無い。
(対処療法的な)解決策に行き着くのに時間がかかったため、および掲載先がいつまで保存されるか分からないので、備忘録として書き残しておく。
#先人の知恵
オリジナルの投稿は下記のサイトにあった。
https://apple.stackexchange.com/questions/111197/runaway-distnoted-process
"Michael Rourke"さんが2016年に最初に回答しているスクリプトは以下の通り。
#!/bin/sh
#
# check for runaway distnoted, kill if necessary
#
PATH=/bin:/usr/bin
export PATH
ps -reo '%cpu,uid,pid,command' |
awk -v UID=$UID '
/distnoted agent$/ && $1 > 100.0 && $2 == UID {
system("kill -9 " $3)
}
'
作者の意図に沿うならば、$HOME/bin に置くと良いようだ。これをcrontabに登録して常時監視・実行することで、disnoted を KILL してしまう。
* * * * * sh "$HOME/bin/checkdistnoted"
同じ回答欄には自動でインストールしてcronも編集してくれるスクリプトまで記載されている。
ひとまず、これでしばらく様子を見ようと思う。今のところ、何度かファイルを更新してみても暴走は起きないので効果が期待できる。