部分ディスクフォーマット後のシェルのオートコンプリートは非常に遅いです。

部分ディスクフォーマット後のシェルのオートコンプリートは非常に遅いです。

今週初めの公式公開日にFedora 26にアップグレードしましたが、簡単に言えばインストールの問題が発生し、部分的に再フォーマットされました。私のディスクレイアウトは次のとおりです。

# df -h | grep dev
/dev/sdb3        40G  5.6G   32G  15% /
/dev/sdb2       477M  138M  311M  31% /boot
/dev/sdb1       200M   34M  167M  17% /boot/efi
/dev/sda2       9.8G  940M  8.4G  10% /var
/dev/sda1       493G  441G   27G  95% /home

/dev/sdbルートがインストールされたSSDで、/dev/sdaパーティションがある通常のHDDです/home。失敗したアップグレードを修正するのではなく、Fedora 26を新しくインストールすることを決定し、SSDのすべてのパーティションを再フォーマットし、パーティションをそのまま維持しながらdnfFedora 26を再インストールしました。インストールがスムーズに行われ、1つを除いて、すべてが再びうまく機能するようです。これで、Zhsオートコンプリート機能は、より大きなディレクトリに対して非常に遅くなります。/dev/sdb/home

Zshが私のデフォルトのシェルで、多数のプラグイン(ああ、私のZsh、FZFなど)がインストールされているので、アップグレード中/以降にプラグインのいずれかに問題がある可能性があると考えてBashに切り替えました。 、オートコンプリートが表示されるまでに10〜30秒(ディレクトリのサイズによって異なります)がかかります。問題を解決するためにシェルをさらにインストールしましたが、驚くほど完璧に機能しtcshました。fish同じ設定でBashとZshが10秒間停止するなど、この2つのパフォーマンスは非常に優れています。

私はZshインストールと比較して非常に普通の構成を持つBashを使用して一般的な診断を行いましたが、多くの注意が見つかりませんでしstraceset -x。また、削除後もまだ遅いので、FZF関連の問題を排除しました...私の直感では、これは何らかの方法でZshとBashに影響を与える完成エンジンの奇妙なハッシュ/キャッシュの問題であるに違いないと言いますが、私はそれを知りません。実際にこれを裏付ける証拠があります。オートコンプリートのために小さなフォルダ(いくつかのファイル、いくつかのサブディレクトリ)を使用すると、私が試したすべてのシェルでうまく機能します。私が試した別の方法は、fsck -A -y破損したパーティションがないことを確認するために実行し、いくつかのメタデータまたはキャッシュが破損した場合に備えて再インストールbash-completionすることです。zsh

ここで本当に興味深いのは、オートコンプリートが私が投げるすべてに問題がないという事実ですが、BashとZshはそうではありませんtcshfish何が起こっているのか知っている人はいますか?これについてご存知の方には本当にありがとうございました!

ベストアンサー1

問題が解決しました!私はあちこちに歩き回り、perf trace出力行がスクロールし続けたので、Konsole(私のデフォルトの端末)でlibnotifyへの奇妙な呼び出しを垣間見ることができました。再フォーマットした後は、デスクトップ通知デーモンがインストールされていないため、これは奇妙に見えます。 (私は通知デーモンが提供されていないi3を使用しています。)これにより、他の端末エミュレータを試してみることを考えました。それで試してみましたが、urxvt問題は消えました。私もやってみましたが、gnome-terminal全く問題ありません! Konsoleがdbus / systemdを介してデスクトップ通知を発行しようとしていますが、libnotifyデーモンが要求に応答するようにインストールされていないため、タイムアウトが発生する可能性がありますか?それでdunst、アップグレードする前に使用していたデーモンをインストールしましたが、予想どおりにKonsoleのオートコンプリートが遅くなりました!

したがって、オートコンプリート機能が呼び出されたときにKonsoleが何をしたいのかわかりません。デーモンをインストールした後も通知ポップアップが表示されるのを見たことはありませんが、今は問題が解決しているようです。

私はこれをKDEチームに連れて行き、彼らがどのように考えているのかを知りたいと思いました。通知デーモンをインストールしていないことが私の間違っているにもかかわらず、私が試した他の端末ではこの問題をうまく処理したためです。

とにかく、助けてくれた皆さんに感謝します!

おすすめ記事