ad1

2021年4月6日火曜日

Windows 10 でスリープから復旧後に CPU 利用率が system "ntoskrnl.exe" SeAccessCheckWithHint+0x1c620 で30%~50% 消費されてしまう問題

Thinkpad X1 Nano に PC をリプレイス後、Zoom のクラッシュ問題含めて小さな不具合に遭遇していますが、スリープから復旧後に CPU 利用率が system "ntoskrnl.exe" で30%~50% 消費され再起動しないとどうにもならない事象に遭遇。

事象としてはスリープ復旧後にファンがずっと動き続け、タスクマネージャを開くと CPU 利用率が 30% ~ 50% で System プロセス (ntoskrnl.exe) が高い値を示している事が確認できます。

以下、事象の解決に試した切り分け手順と原因についてまとめました。

※ 2021年7月の BIOS | UEFI Update 1.43 / ECP: 1.40 <ThinkPad X1 Nano BIOS アップデート> にて、S3 Sleep が可能になっています。S0 Sleep (モダンスタンバイ) 問題を手っ取り早く回避するには S3 Sleep を選ぶのも良いかもしれません。

詳細は以下にまとめてあります。



System のプロセスが 30% ~ 50% を使い続けているのが確認できます。


このプロセスが何をつかんでいるのか、Process Explorer でもう少し確認してみると

ntoskrnl.exe   SeAccessCheckWithHint+0x1c620

を多く記録している事がわかりました。※ Process Explorer は Sysinternal に含まれます。


"SeAccessCheckWithHint+0x1c620" で調べてみると、X1 Nano や Thinkpad に限った事象ではないようで、2020年10月あたりから Lenovo のフォーラムや Reddit で報告が上がっており、根本解決には至っていない様子。

私の環境で原因だった (と思われる) もの

Palo Alto Global Protect 

いくつかの設定と、いくつかの常駐アプリの挙動を切り分けながら、Palo Alto の Global Protect がモダンスタンバイ (S0 スリープ) との相性が良くなかった事を確認し、
msi 版の Global Protect をアンインストールし、Microsoft Store 版の Global Protect に置き換えてみました。
  • Addressed Issues in GlobalProtect App 5.2
    Release Note にもいくつかモダンスタンバイとの相性や、事象は違うが System プロセスが 30% に張り付くなど似たものが多数。
※ 2021/4/12 設定、その後 X1 Nano のインテリジェントセキュリティやスマートスタンバイなど目玉機能を再度有効化して、タスクスケジューラで無効化した JOB も再有効化して経過観察中。

Cisco WebEx Meeting

Global Protect を変更して安定した様に見えた 2021/4/13、WebEx を利用したミーティングの後 WebEx Meeting のバックグラウンドプロセスをそのままにスリープ、その後の復帰時に System が CPU 高騰する事象が再発。

Sytem CPU が 30% で張り付いている時に WebEx のプロセスをタスクマネージャから killl する事で CPU 利用率が正常に戻る事が確認できました。キャプチャを取り忘れたので、次回再発時に詳細を追記します。 2021/4/14、再現できたので追記。

WebEx Meeting (WebEx Teams とは別) がインストールされると以下のプロセスが稼働しています。
  • ciscowebexstart.exe
  • atmgr.exe

S0 スリープから復帰後、System プロセスが高い CPU 利用率を示し続けます。

タスクマネージャから atmgr.exe のプロセスツリーごと終了します。


atmgr.exe だけでも CPU 利用率は元に戻りますが、ciscowebexstart.exe も止めます。

System の CPU 利用率が無事に下がります。

WebEx のスタートアップが有効な場合はタスクマネージャ、またはアプリの設定から無効にしておきます。


WebEx Meeting を利用した後はこれらのプロセスが裏で動き続けているかもしれないので、止めておく事がお勧め。

試した切り分けと回避策

私の環境で発生していたのは一定時間以上スリープした後の復旧時に CPU 利用率が高騰するということ。1時間程度の短時間では発生していなかったと思います → 発生しました。
ほぼ確実に、前日の晩にスリープして翌朝復旧すると CPU が高騰してしまい再起動が必須となってしまい不便でした。

とりあえず疑わしいロックやスリープ関連の機能は順に止めて切り分けてみました。

電源オプションで休止モードの無効化

切り分けの邪魔なので自動スリープと休止モードは無効にしました。
※ X1 Nano のスマートスタンバイがこれをコントロールしているのか、無効にしたのにいつの間にか戻ってしまう様ですが、スマートスタンバイ無効にして、休止も無効にしてみました。
結果的にはこれは白。

Lenovo インテリジェントセンサー・インテリジェントセキュリティー

Thinkpad X1 Nano の目玉機能の一つと思っていたユーザーを感知して自動でロック・ロック解除する機能ですが、いったん無効にしました。この機能自体というより、この機能のロック後にスマート・スタンバイの機能でモダンスタンバイ状態になると CPU 高騰の事象が発生する様子。

Windows 10 の自動メンテナンス機能

これも非常に怪しい機能ですが、私の環境ではスリープ解除は既定でチェックはずれているのでそのままにしました。


タスクスケジューラから ProcessMemoryDiagnosticEvents と ProcessMemoryDiagnostic を無効化

深夜、スリープ中に復帰して起動した痕跡のあるタスク、自動メンテナンスと合わせて怪しいと思ったので無効化しました。

"コントロールパネル" > "管理ツール" > "タスクスケジューラ"  > [タスクスケジューラ ライブラリ] > [Microsoft] > [Windows] > [MemoryDiagnostic]
"ProcessMemoryDiagnosticEvents" と "ProcessMemoryDiagnostic" を無効化


※ コントロールパネルは最近はメニューに表示されないようなので開き方わからない方は Explorer や Win+R から "control" を打ち込んでください。

が、どうやら原因はこれ以外だったようで、スリープのまま土日挟んで月曜朝に起動したら再び CPU 利用率が高騰してしまいました。

その他のタスクスケジューラの自動起動系メンテナンスの無効化

"ProcessMemoryDiagnosticEvents" と "ProcessMemoryDiagnostic" 以外にも、"コントロールパネル" > "管理ツール" > "タスクスケジューラ"  > [タスクスケジューラ ライブラリ]  にいくつかインストールしたアプリケーションに関連したタスクが入っており、週末の間に実行された形跡があったのでこれらを無効化しました。

Chrome や Edge、その他ソフトウェアの更新チェックが自動で行われている様ですが、普段使うもので適宜更新しているので自動チェックは無効化します。

これで問題を回避できるかしばらく様子を見ます(2021/4/5)。
  • 途中経過追記
    • 2021/4/6 夜中のスリープ後、問題なし
    • 2021/4/7 夜中のスリープ後、問題なし
    • 2021/4/8 夜中のスリープ後、事象再発
    • 2021/4/9 夜中は休止、問題なし
    • 2021/4/10 ~ 12 金曜夜から週末挟んで休止、月曜起動時に問題なし
    • 2021/4/12 海外のフォーラムで WebEx のプロセスが怪しいとの情報が追加されていたので、WebEx のスタートアップを無効化して検証開始
      https://forums.lenovo.com/topic/view/1301/5050451?page=3
      https://www.reddit.com/r/thinkpad/comments/jygken/high_cpu_usage_after_waking_from_sleep_systemexe/grlhhqg/?context=3


    • 2021/4/12 WebEx のプロセス停止して、スタートアップからも無効化したが、1時間ほど席を外してスマートスタンバイで S0 スリープに入った後、あっさりと System プロセスが暴走したので WebEx 以外にも原因あること確定。
    • 2021/4/12 WebEx 以外にスタートアップに設定されている常駐プロセスを順に切り分けていくことにします。まずは Global Protect を msi 版から Windows Store 版に切り替えて様子見。
    • 2021/4/13 WebEx のスタートアップは無効化していましたが、WebEx を利用したミーティングの後バックグラウンドプロセスをそのままにしていたらスリープ復帰後に System の CPU 利用率が高騰、WebEx のプロセスを kill する事で正常に戻せる事を確認。
    • 2021/4/14 ~ 15、スマートスタンバイ・モダンスタンバイ使いながら問題なく安定中。
    • 2021/4/16、その後問題なく動いているので解決したと判断。

モダンスタンバイ中の多数のログ

2021/4/8 に事象が再発したので夜中のイベントログを確認したところ、多数のネットワーク関連のログが記録され、スリープも定期的に解除されている事が確認できます。

7025 - Dump after return from D3 before cmd
7026 - Dump after return from D3 after cmd

上記ログメッセージで調べてみても、Intel や Microsoft の Forum で最新の適切なドライバを適用しろ、くらいしか回答がなく、モデル問わず困っている人が多数いるようです。
夜中のスリープ状態の時でも裏でいろいろ動いているってことで、モダンスタンバイ時に悪さしているっぽい。



WiFi モジュールのドライバは現時点で最新の 22.40.0.7 が適用済み。


これも VPN 関係が悪さしているっぽいが、関連性の証拠がないので Global Protect を Windows Store 版にしてしばらく様子見。

Thinkpad X1 Nano Gen1 でモダンスタンバイ(S0 スリープ)を無効化して S3 スリープにする方法

X1 Nano で S3 スリープは利用できない ※ 2021年7月の BIOS | UEFI Update 1.43 / ECP: 1.40 で S3 スリープが可能になりました。

8/15 に Windows Update と Vantage で System Software の更新を掛けたところ BIOS の更新も含まれていたのでリリースノートを確認すると、"(New) Support New Sleep State for Linux that are not compatible with Suspend-to-Idle" の記載。

リリースノート

<1.44-1.41>
 UEFI: 1.44 / ECP: 1.41
- (New) Supported EAP-TLS method for WiFi Network Boot/Lenovo Cloud Services.
- (Fix) Fixed an issue where WMI parameter of SleepState is wrong.
- (Fix) Fixed an issue where 1802 Error may be displayed with EM05-CE WWAN device.
- (Fix) Fixed an issue where SSD is not detected on Windows PE version 10.0.10240.
- (Fix) Fixed an issue where system performance may down unexpectedly while heavy load application is running.

<1.43-1.40>
 UEFI: 1.43 / ECP: 1.40
- (New) Update ThinkShield secure wipe application.
- (New) Enhanced WMI interface to support new settings to change with Supervisor Password.
- (New) Support New Sleep State for Linux that are not compatible with Suspend-to-Idle.   S3 スリープ復活っぽい機能追加が!
        (Note) Above update will show "Self-Healing BIOS  backup progressing ... xx %" massage on screen during BIOS update process.
        (Note) If the UEFI BIOS has been updated to version 1.43 or higher, it is no longer able to roll back to the version before 1.43
        (Note) If the UEFI BIOS has been updated to version 1.43 or higher, Memory Training will take approximately 2 minutes after which the system will reboot. Please wait even though system is kept blank during the Memory Training.
期待のできるアップデートが忘れたころに来たので早速適用。

再起動後、改めて F1 BIOS Setting モードにはいると "Sleep State" メニューが復活し、
"Windows 10 and Linux" と "Linux S3" の2種類から選べるようになりました。

早速 S3 スリープを設定し、powercfg /a で確認するとしっかり S3 スリープが反映されました!


S0 スリープ中の問題は特に最近は起こっていませんでしたが、一応 S3 にしておこうと思います。


※ 以下は 2021年4月時点の切り分けの記録です。現在は S3 スリープ可能になりました。

原因が突き止められない間、スリープが使い物にならないってのはかなりきついので、モダンスタンバイ自体を無効にしたかったのですが、起動時の F1 メニューで設定画面に入っても昔あった "Sleep State" メニューもないし、今までの S3 スリープは X1 Nano だと使えないようです。
一応確認すると、モダンスタンバイが有効 ( S0 )で以下の状態 ( powercfg /a )。


起動時に F1 で BIOS メニューを開いても Graphical / Simple Text の両画面で "Sleep State" 設定は見当たらず...


また、X1 Nano の設定だとスリープ中のネットワークに関するメニューが無く、スリープ中にネットワークの挙動が多数ありますがこれを制御するのは直接関連するプロセスを止めるしかなさそう。

また Lenovo Vantage もスマートスタンバイのオンオフくらいしかなく、最近の PC ではモダンスタンバイ以外選択肢はないようです。





0 件のコメント:

コメントを投稿

過去30日でアクセスの多い投稿