あれこれ、とりあえず。

アクセスカウンタ

zoom RSS Mac proをYosemiteにアップデートしてから周期的にスリープが解除されて困る

<<   作成日時 : 2014/11/24 18:48   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Power Nap対応しないはずのMac pro 2008で、Yosemiteにアップデートして以降、2時間弱くらで周期的にスリープから覚めてすぐにまたスリープするという現象に悩まされている。
ディスプレイのスリープは解除されずに画面は真っ暗のままで、数秒間動作してログを記録してまたスリープに戻っているだけで、急にファンの起動音がして気が付くという程度だけれど、よろしくない。

システムログを調べてみると、問題の時間間隔でRTCによるWakeが確認できる。
こんなかんじ。
# grep RTC /var/log/system.log
Nov 24 00:41:48 macpro kernel[0]: RTC: PowerByCalendarDate setting ignored
Nov 24 04:04:28 macpro kernel[0]: Wake reason: RTC (Alarm)
Nov 24 04:04:28 macpro kernel[0]: RTC: Maintenance 2014/11/23 19:04:26, sleep 2014/11/23 17:16:32
Nov 24 04:04:28 macpro kernel[0]: RTC: PowerByCalendarDate setting ignored
Nov 24 05:53:21 macpro kernel[0]: Wake reason: RTC (Alarm)
Nov 24 05:53:21 macpro kernel[0]: RTC: Maintenance 2014/11/23 20:53:19, sleep 2014/11/23 19:05:26
Nov 24 05:53:21 macpro kernel[0]: RTC: PowerByCalendarDate setting ignored
Nov 24 07:42:13 macpro kernel[0]: Wake reason: RTC (Alarm)
Nov 24 07:42:13 macpro kernel[0]: RTC: Maintenance 2014/11/23 22:42:11, sleep 2014/11/23 20:54:17
Nov 24 07:42:13 macpro kernel[0]: RTC: PowerByCalendarDate setting ignored
Nov 24 09:31:06 macpro kernel[0]: Wake reason: RTC (Alarm)
Nov 24 09:31:06 macpro kernel[0]: RTC: Maintenance 2014/11/24 00:31:04, sleep 2014/11/23 22:43:09
Nov 24 09:31:06 macpro kernel[0]: RTC: PowerByCalendarDate setting ignored
Nov 24 11:19:59 macpro kernel[0]: Wake reason: RTC (Alarm)
Nov 24 11:19:59 macpro kernel[0]: RTC: Maintenance 2014/11/24 02:19:57, sleep 2014/11/24 00:32:02
Nov 24 11:19:59 macpro kernel[0]: RTC: PowerByCalendarDate setting ignored
Nov 24 13:08:52 macpro kernel[0]: Wake reason: RTC (Alarm)

システムログはローカル時刻で記録されていて、RTC:MaintenanceのログはUTCで記録されているので、ログの時刻は整合している。
どうやらだれかがRTCを使ってスリープ解除する設定をかけているっぽい。
最後のPowerByCalendarDateの設定が無視されたみたいなログはよくわからず。

もちろん、システム環境設定の省エネルギーにある「Ethernetネットワークアクセスによるスリープ解除」は無効にしてあるし、スケジュール設定もしていない。
# pmset -g
Active Profiles:
AC Power -1*
Currently in use:
hibernatemode 0
womp 0
networkoversleep 0
sleep 180
Sleep On Power Button 1
ttyskeepawake 1
hibernatefile /var/vm/sleepimage
autorestart 0
disksleep 10
displaysleep 15

だれかがRTCを使ってスリープ解除のスケジュールをしているらしいことはわかったけれど、その先にすすめず。
グーグル先生に聞いてみると、この事象をFixしているひとがみつかったのでそれを参考にいじってみる。
"Fix yosemite rtc alarm wakeup issue"で検索してね。

YosemiteからDNS解決をするサービスが"discoveryd"に置き換わっていて、これの起動引数に"--no-multicast"を追加せよというもの。
さっそく既存のplistを見てみる。
# grep -A12 Arguments /System/Library/LaunchDaemons/com.apple.discoveryd.plist
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/discoveryd</string>
<string>--udsocket</string>
<string>standard</string>
<string>--loglevel</string>
<string>Basic</string>
<string>--logclass</string>
<string>Everything</string>
<string>--logto</string>
<string>asl</string>
</array>
<key>EnableTransactions</key>
たしかになかった。
ので、最後に追加してみた。
# grep -A12 Arguments /System/Library/LaunchDaemons/com.apple.discoveryd.plist
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/discoveryd</string>
<string>--udsocket</string>
<string>standard</string>
<string>--loglevel</string>
<string>Basic</string>
<string>--logclass</string>
<string>Everything</string>
<string>--logto</string>
<string>asl</string>
<string>--no-multicast</string>
</array>

これでMacをリブートすれば回復するだろうということなのだけど。とりあえずこれで様子見かなあ。

すくなくともMountain Lion や Mavericksの頃にはこんな問題は起きなかった。Yosemiteから"discoveryd"に置き換わったということは、以前のサービスに戻してやれば、もしかして。それに、最近ネットワークの名前解決まわりがどうも調子よくない。思い当たることが多いので、Yosemiteにする前のホストのサービスを見てみると起動しているのは"/use/sbin/mDNSResponder"だったので、こちらに起動サービスを差し替えてみることにしよう、と思ったのだけれど、YosemiteにはmDNSResponderはmanの残骸だけで実体が消されていた。。。(´・ω・`)

追記:
discoverydのplistにオプション追記してやると、確かに周期的なwakeはかからなくなったのだけれど、Finderのサイドバーの"共有"リストにいろいろなものが表示されなくなって使いづらくなる。画面共有やらファイル共有やらでよく使うホストは"サーバへ接続"のリストにアドレス指定でURIを書いて保存して処置しているけれど。(´・ω・`)ハー

追記2:
さらに致命的な問題が。iTunesでiPhoneやiPadなどのデバイスがサーチされなくなるのでWiFi経由で同期操作ができなくなってる。手動でデバイスを追加する方法がわからないので他の方法を考えないと。(´・ω・`)

結局、10.9 Mavericks を別にインストールして、そこからmDNSResponderの関連ファイルをコピーしてきた。
/usr/sbin/mDNSResponder
/usr/sbin/mDNSResponderHelper
/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
/System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist
そんでもって、
# launchctl unload /System/Library/LaunchDaemons/com.apple.discoveryd.plist
# launchctl unload /System/Library/LaunchDaemons/com.apple.discoveryd_helper.plist
# launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist
# launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
launchdのサービスを入れ替えておしまい。

# mv /System/Library/LaunchDaemons/com.apple.discoveryd.plist /System/Library/LaunchDaemons/com.apple.discoveryd.plist.BAK
# mv /System/Library/LaunchDaemons/com.apple.discoveryd_helper.plist /System/Library/LaunchDaemons/com.apple.discoveryd_helper.plist.BAK
Macをリブートしたときにdiscoverydサービスが戻っちゃうときは、もとのplistファイルは一応バックアップにリネームしておく...

Finderのリモート接続も、iTunesのデバイスやAirPlayスピーカにも自動接続できるようになったし、2時間くらいの周期起動もなくなった。これで当分様子見。
Mountain LionやSnow Leopard の古いmDNSResponderのバイナリはYosemiteで動作できなかったので、Mavericksのバイナリが動いてくれてホントよかった。
アップルが一度削除した古いサービスを復活させることはないと想像。この問題はYosemiteで期待通りに修正される日はくるのだろうか?(´・ω・`)

-----
追記。
EL Captain 11.11では元のmDNSresponderに戻っているし、Yosemiteでも10.10.5あたりでdiscoverydが外れているぽい。やっぱりMac OSはマイナーアップデート.5が出るくらいまで安定しないねえ…

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Mac proをYosemiteにアップデートしてから周期的にスリープが解除されて困る あれこれ、とりあえず。/BIGLOBEウェブリブログ
文字サイズ:       閉じる