アフィリエイト広告を利用しています

mac野郎なのかでは、日常使っているmacbook pro retinaで困ったことの解決法や、便利、快適にする方法などを主に掲載しています。

macOS High Sierra 10.13.4で困ったこと、画面がロックされるとウィンドウ系のイベントが担保されません

macOS High Sierra 10.13.4へアップグレードしましたか?持っていないので関係ありませんがeGPUをサポートしているのが話題になっていますよね。アップデート後、少し困ったことになっています。これは10.13.5で解消されるのか?別の対処方法があるのか?10.13.4は出たばかりで情報がなく困っています。Safariもセキュリティが強化されましたね。セキュリティの強化は、結果的に使い勝手が悪くなることにつながることが良くわかりました。

macOS High Sierra 10.13.4で困ったこと


MacBook Pro Retina Mid2015とLate2012をmacOS High Sierraで使っています。Late2012は眠らないMacの設定(コンピューターをスリープしない設定 Late2012はこれができます)で自作アプリを常時動かしています。
macOS High Sierra 10.13.4にアップデートした後、しばらくしてから気がつきました。ひょっとするともう少し前のバージョンから始まっていたのかもしれません。macOS High Sierraで追加されたとても便利な「画面をロック」、または「スクリーンセーバーが動作した後」、しばらくするとアプリの動作が緩慢になります。
コンピューターをスリープしないのでアプリは裏で動いています。利用者がいない状態(画面がロックされた、スクリーンセーバーが動き始めた)とmacOSが認識すると画面系のイベントループがとても遅くなるということだと思います。

例えば、これは、1秒間(Timer.scheduledTimer)でログする(TextViewに時間と呼び出し回数を記録する)という単純なアプリを動かしたまま、画面をロックし、ロックを解除した後の動作結果です。
画面をロックした後、動いているアプリのタイマー呼び出し間隔を確認できる。1秒オーダーが保てないことがわかる

1秒間隔で呼び出し、呼び出されたログに時間と呼び出し回数を記録、1秒後にタイマーをセットという処理を繰り返しています。それなのにご覧のように6秒、10秒といった間隔で呼び出されています。
1秒間隔で呼び出された箇所をOK、それ以外の間隔で呼びさられた箇所をNGにしています。NGが目立ちますね。
OK 2018年4月2日 12:05:00 JST 79
OK 2018年4月2日 12:05:01 JST 80
NG 2018年4月2日 12:05:07 JST 81
OK 2018年4月2日 12:05:08 JST 82
NG 2018年4月2日 12:05:28 JST 83
OK 2018年4月2日 12:05:29 JST 84
NG 2018年4月2日 12:05:36 JST 85
NG 2018年4月2日 12:05:40 JST 86
NG 2018年4月2日 12:05:49 JST 87
NG 2018年4月2日 12:05:54 JST 88
NG 2018年4月2日 12:06:00 JST 89
OK 2018年4月2日 12:06:01 JST 90
NG 2018年4月2日 12:06:09 JST 91
OK 2018年4月2日 12:06:10 JST 92

=>画面がロックされるとウィンドウ系のイベントが担保されません

人が休んでいる間に、しっかり仕事をしている賢い子だったんですが、最近はサボることを覚えてしまったようです。とても残念な変更です。

ちなみに、cronでスケジュール処理を動かしています。こちらは、時間とおりきっちり仕事をしてくれています。

スリープしない設定にした理由と以前の動作


初期、スケジューラー(cron)でアプリを起動し、処理したら自動終了させるような自作アプリを作って見ました。スリープしていてもmacOS/OS Xは一定間隔で少し起きて処理をしてまた寝るという感じの動作をします。電源の管理で起きる時間を設定し、この時間に処理をすれば常時起動しなくてもいいね!というナイスな発想だったんですが、結果的には愚策でしたよ。

スリープ中に動作したタイミングでウィンドウがあるアプリを起動させることはできませんでした。kernelでガードされている感じです。内容は忘れちゃいましたが、エラーメッセージもなんだかとっても特徴的だったことを覚えています。あぁ、このタイミングでは動かしちゃいけなんですね。と理解しました。


失敗を踏まえて、スリープしない設定にして動かすようにしています。エコなアプリ設計をしているのでアプリ自体がCPUをぶん回すようなことはしないようにしています。

アプリはデータベースに新たな要求を受け付けると動作します。データベースに要求をぶち込むタイミングはcronで制御しています。時間になると即座に動き、求めている作業を完了してくれます。一定間隔でこれを繰り返していました。開始時間が遅れることはなかったです。


High Sierraになり、サボりまくりです。

対処法はあるの?


cronは時間通りに動作します。画面系イベントは信頼できないことがわかりました。現状はアプリを捨てるしかありませんね。困りました。進展あったらここに追記しますね。




Mac買ったら最初に見るべき丁寧な本【Macデビュー者向け】

初めてMac買ったら、初期設定はどうするの?いいアプリは?初心者がやるべき設定とかの情報に目を奪われがちです。最初に見るべきはこのサイトを含めた情報サイトではなく、丁寧に書かれているマニュアルです。これからご紹介する電子Bookは初めてなら絶対に役立つと思っています。

MacBook ProにギガビットLANを追加、古いmacの通信を強化する2つの方法とメリットデメリット

MacBook ProにギガビットLANを追加したいと考えていました。ちょうど良いタイミングでセールがあったのでEgolggoのUSB LAN HUB(QA-H01E)をAmazonで購入しています。MacのUSB3.0ポートに接続することでギガビットLAN(有線)とUSBハブ(3ポート)を追加できる製品です。当ページで古いmacの通信を強化する2つの方法とメリットデメリット、実際の使い勝手などがわかります。

古いmacの通信を強化する2つの方法とメリットデメリット


お使いのmacが11ac規格(無線LAN)に対応しているなら866Mb/sの転送レートの高速通信が可能です。11nまでの対応だと最大でも450Mb/sの転送レートですよね。古いmacの通信を強化するには、以下2つの方法があります。
MacBook Pro Late2012の現状の通信速度を転送レート1000Mb/sにする有線化と11acアダプターを使うイメージ


  • 祝!初マック(mac book retina 13インチ)!retina美しいです^^マックに関係するTips、情報、はまったことの解決策等
  • Mac野郎なのか
  • プロフィール

このページの先頭へ

×

この広告は30日以上新しい記事の更新がないブログに表示されております。