왜 노틸러스가 느립니까?


19

많은 파일을 포함하는 디렉토리를 열 때 왜 노틸러스가 매우 느린 지 궁금합니다. 예를 들어 내 / usr / lib 디렉토리에는 1900 개의 파일이 있으며 모든 것을 표시하는 데 약 5 초 이상 걸립니다. 몇 달 전에 우분투를 설치 한 이래로 정말 좋았고 때로는 성가시다. 나는 강력한 하드웨어가 없지만 Windows 탐색기가 이것보다 훨씬 빠르다는 것을 알고 있습니다.

속도를 높이기 위해 할 수있는 일이 있습니까?

우분투 10.04


1
내 생각에 노틸러스는 ls를 사용하여 목록을 만드는 반면 탐색기에는 캐시가 있습니다.
digitxp

어떤 종류의 시스템입니까? 이것이 큰 요인이라고 생각합니다. 넷북에서는 느리지 만 4GB 이상의 램을 가진 i7에서는 그리 느리지 않습니다.
Chris

답변:


27

실행을 추적하면 nautilus속도 저하가 두 가지 요소의 조합으로 인한 것임을 알 수 있습니다.

  • 각 파일에 대한 유용한 정보를 표시하는 것이 현명합니다. 파일 내용을 살펴보고 사용할 아이콘을 결정하고 미리보기를 표시합니다. 환경 설정에서 미리보기를 끄면 톤을 낮출 수 있습니다.

  • 그것은 쓸모없는 일을 많이합니다 (예를 들어 stat, 각 파일을 여러 번 치고 /proc/filesystems디렉토리가 아닌지 확인하는 것과 같은 ). 프로그래밍을 배우고 프로그램을 개선하며 패치를 보내면됩니다. 또는 저자에게 기능 요청을 보내십시오 (더 빨리 작성하십시오).

  • 각 디렉토리에 대해 여러 외부 프로세스를 호출하지만 수행 한 작업을 살펴 ​​보지 않았습니다.


좋은 답변 : D! 패치 + featurerequestrequest에 +1 : D
BloodPhilia

나는 아직 기여하기에 충분하지는 않지만 프로그래머입니다. 호기심 때문에 추적을 어떻게 했습니까?
코딩 지구

2
@Derek : strace -f -ttt -p1234 -o nautilus.strace여기서 1234는 노틸러스의 pid입니다. 추적을 자세히 분석하지 않았으며 리드 업 (하위 프로세스와 관련된 많은 항목)과 파일 당 물건 (여러 파일 statopen일부 파일)을 살펴 보았습니다 .
Gilles 'SO- 악마 그만해'

1
다수의 stat ()는 glibc에서 온 라이브러리 호출에서 비롯됩니다.
Tim Post

와우, 이것은 6 년이 지난 지금까지 문제가되었습니다! 어떻게 아직 아무도 시간을 투자하지 않았습니까? 우선, 파일을 나열한 후에 미리보기 및 통계를 수행해야합니다. 따라서 ls미리보기가로드되는 동안 큰 폴더를 즉시 나열 하고 탐색 할 수 있습니다. 올바르게 기억하면 Windows 탐색기가 이와 같이 작동합니다. 이와 같이 많이 사용되는 우분투 프로그램에는 믿기지 않습니다. 그러나 불평하지 말고 대신 기부하십시오
phil294

5

"편집-> 환경 설정"의 "미리보기"탭에서 모든 옵션을 "사용 안 함"으로 전환하십시오.

또한 "Assistive Technologies"를 끄는 데 큰 도움이되었습니다. "시스템-> 환경 설정-> 보조 기술"에서이를 수행 할 수 있습니다. "보조 기술 사용"을 선택 취소하십시오.

후자의 변경 사항을 적용하려면 로그 아웃했다가 다시 로그인해야합니다.


이것은 나에게 약간의 개선을 제공합니다. 북마크를 삭제하면 훨씬 더 큰 차이가 생겼습니다.
피터 젠킨스

5

이로 인해 노틸러스 및 GVFS를 포함한 기타 프로젝트의 수석 개발자 인 Alexander Larsson의 대화를 떠올 렸습니다.

Giles 의 대답 , 특히 파일 내용을 살펴 보는 Nautilus에 관한 내용은 Nautilus가 "느린"주요 원인에 대해 설명합니다. 그러나 Giles는 이것이 느린 지 설명하지 않습니다. 어떤 사람들에게는 분명하지만 다른 사람들에게는 그렇지 않을 수 있습니다. Alex가 말한 내용은 다음과 같습니다.

빈 슬레이트로 시작한다고 가정하십시오. 즉, 파일 시스템에 전혀 액세스하지 않았습니다. 이제 stat (“/ some / dir / file”)을 실행한다고하자. 먼저 커널은 파일을 찾아야합니다. 기술적 용어로 inode라고합니다. 루트 디렉토리의 inode를 저장하는 파일 시스템 수퍼 블록을 살펴 보는 것으로 시작합니다. 그런 다음 루트 디렉토리를 열고 "some"을 찾은 다음 "dir"을 찾은 다음 결국 파일의 inode를 찾습니다.

그런 다음 실제로 inode 데이터를 읽어야합니다. 처음 읽은 후에도 RAM에 캐시됩니다. 따라서 읽기는 한 번만 발생해야합니다.

HD를 구식 레코드 플레이어로 생각하십시오. 바늘로 올바른 위치에 있으면 물건을 회전하면서 빠르게 읽을 수 있습니다. 그러나 일단“탐색”이라는 다른 장소로 옮겨야 할 때는 매우 다른 일을하고 있습니다. 팔을 물리적으로 움직 인 다음 올바른 장소가 바늘 아래에 올 때까지 플래터가 회전 할 때까지 기다려야합니다. 이러한 종류의 물리적 동작은 본질적으로 느리기 때문에 디스크 탐색 시간이 상당히 길다.

그래서 언제 찾아야합니까? 물론 파일 시스템 레이아웃에 따라 다릅니다. 파일 시스템은 읽기 성능을 높이기 위해 파일을 연속적으로 저장하려고 시도하며 일반적으로 서로 가까운 디렉토리에 대한 inode를 저장하려고 시도하지만 파일 작성 시점, 파일 시스템 조각화 등과 같은 사항에 따라 달라집니다. 이 경우 파일의 각 통계는 탐색을 유발하고 파일을 열 때마다 두 번째 탐색이 발생합니다. 따라서 아무것도 캐시되지 않을 때 시간이 오래 걸리는 이유입니다.

일부 파일 시스템은 다른 파일 시스템보다 낫습니다. 조각 모음이 도움이 될 수 있습니다. 앱에서 몇 가지 작업을 수행 할 수 있습니다. 예를 들어, GIO는 inode 번호가 디스크 순서 (일반적으로 가지고 있음)와 관계가 있기 때문에 무작위 검색을 최소화하기를 기대하기 전에 readdir ()에서 수신 된 inode를 정렬합니다.

중요한 것은 검색을 최소화하기 위해 데이터 스토리지 및 앱을 설계하는 것입니다. 예를 들어, 이것이 노틸러스가 / usr / bin을 읽는 속도가 느린 이유입니다. 일반적으로 파일의 확장자가 없기 때문에 각각에 대해 마법 스니핑을 수행해야합니다. 따라서 각 파일을 열어야합니다. => 파일 당 하나의 탐색 => slooooow. 또 다른 예는 gconf와 같이 많은 작은 파일에 정보를 저장하는 앱도 나쁜 생각입니다. 어쨌든 실제로 지연 시간을 숨기려고 시도하는 것 외에는 할 수있는 일이 많이 없다고 생각합니다.

그는 다음과 같은 메모로 끝났습니다.

이 딜레마에 대한 진정한 해결책은 회전하는 매체에서 멀어지게하는 것입니다. 인텔 SSD가 굉장하다고 들었습니다. 리누스는 그들에게 맹세합니다.

:-)


3
재미있는 :) 그러나 탐색이 속도 저하의 근본 원인 인 경우 Windows 탐색기가 왜 그렇게 빠른지 궁금합니다. 확실히 하드웨어 때문이 아닙니다.
코딩 지구

4
내가 추측해야한다면 마법 스니핑을하지 않지만 단순히 확장자를 기반으로 파일 감지를 수행한다고 말하고 싶습니다 (Windows XP의 경우 이것을 확인할 수 있습니다).
Bruce van der Kooij

2
바로 그거죠. 익스플로러 (대부분)는 어떤 종류의 파일 스니핑도하지 않으며 단순히 확장자 만 사용합니다. 미리보기를 렌더링하거나 아이콘을 읽으려면 파일을 열어야합니다. .exe 파일로 가득 찬 큰 폴더를 열면이 내용을 볼 수 있습니다. 쉘 확장은 익스플로러가 파일을 열어 스니핑을 수행하도록 할 수 있습니다. 예를 들어, 일부 아카이브 유틸리티는 .exe 파일을 검사하여 SFX 아카이브인지 확인합니다. MS는 실제 속도와 겉보기 속도 모두에서 탐색기 속도를 높이기 위해 많은 노력을 기울였습니다.
afrazier

3

나는 마침내 노틸러스가 너무 느리게 만드는 것을 알아 냈습니다 : 북마크.

이 문제를 해결하려면 모든 책갈피를 삭제 한 후 다시 시작한 다음 사용할 수없는 책갈피를 다시 추가하십시오.

strace를 사용하여 노틸러스가 모든보기에 대해 많은 파일을 언급하고 있음을 깨달았습니다. 디렉토리에없는 파일조차도 추적 중에 탐색했습니다. 노틸러스가이 북마크를 미리 캐시하려고한다고 생각합니다.

북마크로 하나의 네트워크 드라이브가 있습니다 ... 노틸러스가로드하는 데 몇 초가 걸리는 이유 일 수 있습니다.


1

Thunar와 같은 대체 파일 관리자를 사용해보십시오. Thunar는 디렉토리 목록을로드하는 데 훨씬 빠르며 NTFS USB 하드 드라이브에서 ext4로 파일을 복사하는 데 더 안정적이지만 파일 세트가 많으면 노틸러스와 같은 문제가있는 것 같습니다.

스위치 스크립트 https://help.ubuntu.com/community/DefaultFileManager에 대한 링크는 다음과 같습니다.


훌륭한 해결 방법! "sudo apt-get install thunar"및 "exo-preferred-applications"를 좋아하고 (Utilities> File Manger) 솔루션에서 Thunar를 선택하십시오.
Doud

1

Gnome 시스템에 xfce가 설치되어 있고 사용하지 않는 경우 exo-utils를 제거하십시오.

다운로드 후 Chrome이 파일을 올바르게 열지 못하는 문제와 함께 내 문제가 해결되었습니다.


나에게 도움이되지 않았다. exo-utils는 xfdesktop4 패키지를 포함한 많은 패키지에 필요하므로 제거하기가 매우 어렵습니다. sudo dpkg -r --ignore-depends = xfce4-terminal, thunar-volman, squeeze, thunar, xfce4-panel, xfce4-verve -plugin, xfdesktop4 exo-utils
Peter Jenkins

1

"편집-> 환경 설정"의 "미리보기"탭에서 모든 옵션을 "사용 안 함"으로 전환하십시오.

또한 "Assistive Technologies"를 끄는 데 큰 도움이되었습니다. "시스템-> 환경 설정-> 보조 기술"에서이를 수행 할 수 있습니다. "보조 기술 사용"을 선택 취소하십시오.

후자의 변경 사항을 적용하려면 로그 아웃했다가 다시 로그인해야합니다.


1
큰 폴더를 여는 데 걸리는 시간이 약 30 초에서 2 초로 줄었습니다. 맙소사.
wsmart

다른 사용자가 내 게시물을 삭제했습니다. 분명히. 내 Nautius 느린 문제에 큰 영향을 미쳤으므로 Jay에게 그의 게시물에 감사를 표하고 싶었습니다. 진짜, 냉정하게
wsmart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.