今日はあるPCでやけにCPU使用率が高いなぁ…と思ったら、PresentationFontCache.exeというプロセスだった、という内容のご報告です。
最終的にサービスを止めてしまいました。
PresentationFontCache.exe
何かPCが重い、遅いなぁ…。
ある日の休日出勤の日。PCのメンテナンスをしていたらやけにPCが遅くなるタイミングがありました。確かにCPUはCore2Duoと一昔前のPCではありますが、にしても遅い。
別の同スペックのPCはもう少しキビキビ動作してくれています。このPCだけなんだか遅い。
そういう時のタスクマネージャ、早速起動して重いプロセスを探ってみます。
タスクマネージャ:
PresentationFontCache.exeがCPUの稼働の負担になっているのが分かります。
パフォーマンスもこれによって低下しているようです。
となると、PresentationFontCache.exeが気になるところです。
ファイルのプロパティを見てみました。
「C:\Windows\Microsoft.NET\Framework64\v3.0\WPF」に存在していることが分かります。システムファイルってことですね。パスに.NETとありますしFramework64フォルダ配下にあるので、.NET Framework関連のファイルだろうことは想像できます。
主な機能としてWindows Presentation Foundation (WPF) アプリケーションの役に立つよう、フォントデータをキャッシュしてWindows Presentation Foundation (WPF) アプリケーションのパフォーマンスアップに貢献するプロセスってことのようです。
このプロセスでフォントをキャッシュするからWindows Presentation Foundation (WPF) アプリケーションの動きがより高速になる、ということらしいけども、PresentationFontCache.exeがPCの動きそのものを阻害しているという状況。
そうだ、サービスを止めてしまおう
とても安直なのですが、このプロセスが動作しないようにサービスを止めてしまうことにしました。何か動作上影響があるようであれば、再度起動すればいい、くらいの温度感です。
そもそもPresentationFontCache.exeがないとPCの動作上困ってしまって仕方ない、という重要プロセスではない、と判断できるような情報がネット上に多数散見されました。
サービスMMC(services.msc)から該当サービス「Windows Presentation Foundation Font Cache 3.0.0.0」というサービスを探し出します。
このサービスを右クリックしてプロパティ画面。
プロパティ画面からスタートアップの種類を「自動」から「無効」に変更してしまいます。
ここでひとまず再起動、PCの動作を一通り試しましたが、特に動作上問題はなく、使いたいソフトウェアの動作にはWindows Presentation Foundationアプリケーションはないのもあってか、無効化した影響は感じられませんでした。
一つ思ったのは
一つ懸念というか気になったのは、そもそもPresentationFontCache.exeが突然動きが重くなった根本的な原因です。このプロセスが「フォントをキャッシュする」という動きをするプロセスなので、「フォントファイルが破損しているんじゃないか?」という可能性が頭に浮かんできました。検証したわけではありませんが。
フォントファイルが破損しているせいで、そのデータをキャッシュするプロセスが暴走してしまった、というのはありそうな話に思えます。ただ、フォントの破損を検証しようにもインストールされたフォントは数百もあって一つ一つ検証するにも何か手を考えなきゃいけない、悩ましい⇒棚上げ、となっちゃいました。
フォントの破損が疑わしい動きをしていたら、ちょっと考えてみようかなと思ったところです。