Dolphin에서 디렉토리를 전환하는 데 큰 지연이 있습니다.

Dolphin에서 디렉토리를 전환하는 데 큰 지연이 있습니다.

저는 Debian과 KDE로 테스트 중인데 몇 주 동안(Dolphin이나 다른 KDE 라이브러리에 대한 업데이트와 일치한다고 가정합니다) Dolpin(21.08.2)에서 디렉터리를 전환할 때마다 지연이 발생했습니다. 어떤 디렉터리로 전환하든 항상 거의 같은 것 같습니다(거의 1초). 이것이 내 구성으로 인해 발생했는지 확인하기 위해 새 사용자를 만들었지만 같은 일이 일어났습니다.

htop에서는 Dolphin이 I/O(프로세스 상태 "D")를 기다리고 있다는 것을 보여주었기 때문에 strace -e openat dolphin기다릴 때마다 비슷한 출력이 8번 정도 반복되는 것을 보았습니다.

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관련이 있을 수 있지만 실행 중인 도커 컨테이너가 없고 설치 수가 많지 않습니다( mount | wc -l30줄 표시).

방금 알아낸 또 다른 사실은 새 탭에서 디렉토리를 여는 것이 즉시 가능하다는 것입니다. 따라서 실제로 현재 디렉토리를 변경하는 것만으로도 이러한 지연이 발생하는 것 같습니다.

DNS 정보:

  • sudo tcpdump udp port 53 --interface wlp26s0Dolphin에서 특정 작업을 수행할 때 요청이 표시되지 않습니다.
  • 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)

(영어 메시지는 "리소스를 일시적으로 사용할 수 없습니다"입니다.)

답변1

이 KDE 버그 보고서는 문제를 매우 정확하게 설명하는 것 같습니다: https://bugs.kde.org/show_bug.cgi?id=442106

/etc/fstab현재 연결되어 있지 않은 장치 (외부 드라이브가 있음) 가 진입하면 발생하는 것 같습니다 .UUID=

관련 정보