GNOMEのtrackerによってCPU負荷が高くなりPCが重くなる時の対処法
GNOMEのtracker関連のツール(tracker-miner-fs, tracker-extract, tracker-store)によって、CPU負荷が高くなりPCの動作が重くなることがある。trackerはGNOMEが採用している、ファイル検索エンジン。ファイルの名前だけではなく、ファイルの中身まで検索できるようにインデックスを作成してくれるので、非常に便利なツールではある。しかし、バックグラウンドで常駐するため、trackerが原因でいつの間にかPCが重くなったり、その原因もよく分からなかったりするので、かなり厄介な側面も持っている。
自分も、デスクトップ環境としてGNOMEを使っているので、trackerによってPCが重くなる不具合はたまに経験していた。しかし、trackerの不具合は突然発生したり突然解消されたりして、あまり原因がよく分かっていなかった。
最近、かなりtrackerによるリソースの消費が常態化してきたので、trackerの過剰なCPU消費の不具合の原因とその解消方法を調べてみた。
色々試行錯誤した結果、trackerによってCPUの負荷が高くなる原因とその対処法が分かったので、この記事にまとめておく。trackerのCPU負荷によりPCが重くなっている場合は、この対処法を是非試してみてほしい。
まずはログを調べてみる
trackerは正常に動作している限り、CPUやメモリに過剰に負荷をかけることはない。初回起動時や多くの新しいファイルが追加されない限りは、ほとんどリソースを消費することはない。しかし、trackerがファイルの索引作成中にエラーを発生すると、索引作成のループがバックグラウンドで発生してしまい、CPUに過剰な負荷をかけてしまうことになる。
まず、trackerによるCPUの消費が激しい場合は、trackerがエラーを起こしていないか、journalctlコマンドによりログを見て確認する。自分の環境の場合、trackerによる351行にも渡るエラーが約1分間に2回ずつ生成されていた。こんな大量のエラーをこんな頻度で出していたので、愕然となる。
$ journalctl -xb ... 7月 16 15:04:42 Alpha tracker-extract[1887]: Could not insert metadata for item "file://(エラーが発生しているディレクトリのパス)/xxx.pdf": 24.168: invalid UTF-8 character 7月 16 15:04:42 Alpha tracker-extract[1887]: If the error above is recurrent for the same item/ID, consider running "tracker-extract" in the terminal with the TRACKER_VERBOSITY=3 environment variable, and filing a bug with the additional information ...
trackerを即刻削除したいと言う気持ちは抑え、とりあえず、エラーの内容をネット上で調べてみる。同じような状況の人は数多く、みんな困っている。ネットの検索で出てきたエラーの解決策は、以下の方法が多かった。
- 依存関係を無視して、trackerをアンインストール
- trackerを完全に無効化
いずれの方法も強引な力技。trackerを生かしつつエラーを抑える対処法を探してみたが、すぐには見当たらなかった。
tracker暴走問題の対処法|エラーが発生しているディレクトリを、trackerにクロールさせないようにする
いろいろと調べた結果、trackerに特定のディレクトリはクロールさせないようにできることが分かった。そこで、エラーが発生している特定のディレクトリのみ、trackerのクロールから除外することにした。trackerのクロールから除外する方法は、「除外したいディレクトリに、.trackerignoreという名前の空ファイルを作成する」というもの。
自分の環境では、trackerのエラーは、主に2つの親ディレクトリ以下に保存されているファイルで起きていたので、その2つのディレクトリに.trackerignoreという名前の空ファイルを作成した。
$ touch /(エラーが発生しているディレクトリのパス1)/.trackerignore $ touch /(エラーが発生しているディレクトリのパス2)/.trackerignore
これで、PCを再起動して再度ログを確認してみる。すると、trackerによるCPUの負荷も大幅に改善され、tracker由来のエラーも以下の「ole_seek_block: assertion 'block < ole->info->max_block' failed」という1種類のエラーにまで減っていた。
ただし、以下のエラーも数十秒おきに生成されており、ログ中に大量に発生していたのでこのエラーもどうにかしたい。
$ journalctl -xb 7月 16 17:24:30 Alpha dbus-daemon[892]: [session uid=1000 pid=892] Activating via systemd: service name='org.freedesktop.Tracker1.Miner.Extract' unit='tracker-extract.service' requested by ':1.66' (uid=1000 pid=1314 comm="/usr/lib/tracker-miner-fs ") 7月 16 17:24:30 Alpha systemd[871]: Starting Tracker metadata extractor... -- Subject: Unit UNIT has begun start-up -- Defined-By: systemd -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit UNIT has begun starting up. 7月 16 17:24:30 Alpha dbus-daemon[892]: [session uid=1000 pid=892] Successfully activated service 'org.freedesktop.Tracker1.Miner.Extract' 7月 16 17:24:30 Alpha systemd[871]: Started Tracker metadata extractor. -- Subject: Unit UNIT has finished start-up -- Defined-By: systemd -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit UNIT has finished starting up. -- -- The start-up result is RESULT. 7月 16 17:24:30 Alpha tracker-extract[1512]: ole_seek_block: assertion 'block < ole->info->max_block' failed
さらに調べてみると、MicrosoftのWindowsによって作成されたワードファイルなどが、trackerによりクロールされると、上記のようなエラーが発生するという情報があった。
そこで、MicrosoftのWindows上で作成したファイルが保存されていそうなディレクトリを親ディレクトリごと、trackerのクロールから除外する。
$ touch /(Windows上で作成したファイルが、保存されているディレクトリ)/.trackerignore
trackerのクロールから除外するディレクトリを追加できたら、再度PCを再起動してログを調べてみる。
$ journalctl -xb
すると、tracker由来のエラーログは完全に消えていていた。また、trackerにってCPUに負荷がかかりPCが重くなることもなくなった。
参考:
[1]Projects/Tracker/WhatIsTracker - GNOME Wiki!
[2]第482回 GNOMEの全文検索機能を使用する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
[3]Bug #1721720 " Assertion failure: ole_seek_block: assertion 'blo... : Bugs : tracker-miners package : Ubuntu
[4]Bug 788585 – Assertion failure: ole_seek_block: assertion 'block < ole->info->max_block' failed
[5]Bug 746256 – Too many warnings from tracker-extract in the journal
スポンサーリンク
スポンサーリンク
0 件のコメント:
コメントを投稿