Dolphin
在 Dolphin 中切換目錄的大延遲
我正在使用 KDE 進行 Debian 測試,現在有幾個星期(我假設它與 Dolphin 或其他 KDE 庫的更新一致),每次我在 Dolpin(21.08.2)中切換目錄時都會出現延遲。無論我切換到哪個目錄,它似乎總是大致相同(近 1 秒)。為了檢查這是否是由我的配置引起的,我創建了一個新使用者,但同樣的事情發生了。
htop 顯示 dolphin 正在等待 I/O(程序狀態“D”),所以我執行了
strace -e openat dolphin
. 每次等待時,我都會看到類似的輸出重複大約八次。openat(AT_FDCWD, "/run/blkid/blkid.tab", O_RDONLY|O_CLOEXEC) = 23 openat(AT_FDCWD, "/proc/evms/volumes", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/proc/lvm/VGs", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/dev", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 23 openat(AT_FDCWD, "/devfs", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/devices", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/sys/block", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 23 openat(AT_FDCWD, "/sys/block/nvme0n1/dev", O_RDONLY|O_CLOEXEC) = 25 openat(AT_FDCWD, "/sys/dev/block/259:0", O_RDONLY|O_CLOEXEC) = 25 openat(25, "size", O_RDONLY|O_CLOEXEC) = 33 openat(25, "removable", O_RDONLY|O_CLOEXEC) = 33 openat(25, "ext_range", O_RDONLY|O_CLOEXEC) = 33 openat(25, "nvme0n1p3/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/nvme0n1/nvme0n1p3/dev", O_RDONLY|O_CLOEXEC) = 34 openat(25, "nvme0n1p1/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/nvme0n1/nvme0n1p1/dev", O_RDONLY|O_CLOEXEC) = 34 openat(25, "nvme0n1p2/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/nvme0n1/nvme0n1p2/dev", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/sr0/dev", O_RDONLY|O_CLOEXEC) = 25 openat(AT_FDCWD, "/sys/dev/block/11:0", O_RDONLY|O_CLOEXEC) = 25 openat(25, "size", O_RDONLY|O_CLOEXEC) = 33 openat(25, "removable", O_RDONLY|O_CLOEXEC) = 33 openat(25, "ext_range", O_RDONLY|O_CLOEXEC) = 33 openat(AT_FDCWD, "/sys/dev/block/11:0", O_RDONLY|O_CLOEXEC) = 34 openat(34, "dm/uuid", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/dev/sr0", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/dev/block/11:0", O_RDONLY|O_CLOEXEC) = 35 openat(35, "dm/uuid", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/sys/dev/block/11:0", O_RDONLY|O_CLOEXEC) = 35 openat(35, "dm/uuid", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/sys/block/nvme1n1/dev", O_RDONLY|O_CLOEXEC) = 25 openat(AT_FDCWD, "/sys/dev/block/259:1", O_RDONLY|O_CLOEXEC) = 25 openat(25, "size", O_RDONLY|O_CLOEXEC) = 33 openat(25, "removable", O_RDONLY|O_CLOEXEC) = 33 openat(25, "ext_range", O_RDONLY|O_CLOEXEC) = 33 openat(25, "nvme1n1p1/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/nvme1n1/nvme1n1p1/dev", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/sda/dev", O_RDONLY|O_CLOEXEC) = 25 openat(AT_FDCWD, "/sys/dev/block/8:0", O_RDONLY|O_CLOEXEC) = 25 openat(25, "size", O_RDONLY|O_CLOEXEC) = 33 openat(25, "removable", O_RDONLY|O_CLOEXEC) = 33 openat(25, "ext_range", O_RDONLY|O_CLOEXEC) = 33 openat(25, "sda2/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/sda/sda2/dev", O_RDONLY|O_CLOEXEC) = 34 openat(25, "sda3/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/sda/sda3/dev", O_RDONLY|O_CLOEXEC) = 34 openat(25, "sda1/size", O_RDONLY|O_CLOEXEC) = 34 openat(AT_FDCWD, "/sys/block/sda/sda1/dev", O_RDONLY|O_CLOEXEC) = 34
這可能與我安裝了多個磁碟和分區的事實有關,但我不明白為什麼每次更改目錄時它都會等待它們。我還想知道它是否可能每次都在刷新側邊欄中已使用的磁碟空間欄,但隱藏所有側邊欄並不會改變任何東西。
https://bugs.kde.org/show_bug.cgi?id=426672可能是相關的,但我沒有執行任何 docker 容器,也沒有那麼多掛載(
mount | wc -l
顯示 30 行)。我剛剛注意到的另一件事:在新選項卡中打開目錄是即時的。所以真的只是改變目前目錄似乎是造成這種延遲的原因。
關於DNS:
sudo tcpdump udp port 53 --interface wlp26s0
在 Dolphin 中做某事時不顯示任何請求。strace -e trace=network dolphin
顯示了幾行,但在每個目錄更改上並不可靠:recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\1T\24\0\0\0\0\277\6\0\0\5\213\367\0\314\3\16\2\314\3\16\2\20\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Die Ressource ist zur Zeit nicht verfügbar)
(英文資訊為“Resource暫時不可用”)
這個 KDE 錯誤報告似乎非常準確地描述了這個問題: https ://bugs.kde.org/show_bug.cgi?id=442106
它似乎是由目前未插入的設備的
/etc/fstab
條目觸發的UUID=
(我有外部驅動器)。