USB 장치와 파일을 복사 할 때 성능 저하


11

USB 장치 (카메라, HDD, 메모리 카드)와 파일을 복사 할 때 시스템 속도가 매우 느려집니다. 예를 들어 창을 닫으려면 마우스를 움직이지만 마우스 커서가 움직이기까지 약 2 초 이상이 걸립니다. 마지막으로 x 위로 커서를 가져 와서 클릭하면 10 초 이상 아무런 반응이 없습니다. 모든 데스크탑 효과를 비활성화 한 상태에서이 작업을 시도했지만 문제가 지속됩니다.

소프트웨어 : Linux Mint 9 KDE 하드웨어 :

  • 아수스 SLI 마더 보드
  • NVidia 6600 GPU
  • 2GB 램
  • 2GB 스왑
  • AMD Athlox X2 @ 3800+

나 에게이 하드웨어는이 소프트웨어를 실행하는 데 아무런 문제가 없어야하며 USB를 사용하여 파일을 복사 할 때까지는 아닙니다. 이것을 알아 내기 위해 어디에서 시작해야합니까? 그래픽 드라이버가 문제의 일부라고 생각하지만 확실하지 않습니다.


2
USB 포트가 USB 2.0을 지원하는지 확인하십시오. 일부 USB 포트, 특히 데스크탑 전면의 USB 포트는 USB 1.0 전용이었습니다. 또한 BIOS 설정이 USB 성능에 최적인지 확인하십시오. 성능에 영향을 줄 수있는 일부 USB 속도 설정 및 / 또는 USB 레거시 설정이있을 수 있습니다.
팀 케네디

장치가 NTFS로 포맷되어 있습니까? 그렇다면 FAT32 (또는 Linux에서만 사용하려는 경우 EXT4)로 다시 포맷하십시오.
RobinJ

3
리눅스의 메모리 관리에서 거대한 페이지에 문제 가있는 것 같습니다 . 거의 발생하지 않지만 관찰 한 것처럼 들립니다.
artistoex

@artistoex-이 기사는 내가 경험 한 동작을 완전히 요약 한 것입니다. 구체적인 해결책은 없습니다. 이것이 이후 버전에서 수정되었는지 아는 사람이 있습니까? 어쨌든 업그레이드를위한 시간입니다.
John

이 기사에서 알 수 있듯이 투명한 거대한 페이지 기능을 비활성화하고 커널을 다시 컴파일하십시오.
artistoex

답변:


7

리눅스 메모리 관리에서 거대한 페이지에 문제 가있는 것 같습니다 . 거의 발생하지 않지만 관찰 한 것처럼 들립니다.

원인

이 기사에 따르면 이것은 매우 단순화 된 설명입니다.

운이 좋지 않으면 프로세스는 메모리 액세스를 발행하는 순간 중단됩니다. 투명한 대용량 페이지가 활성화되면 메모리 액세스가 동기 압축 (메인 메모리 조각 모음) 동기를 유발하여 압축 전에 메모리 액세스가 완료되지 않기 때문입니다. 이것 자체는 나쁜 것이 아닙니다. 그러나 (예를 들어, USB로 버퍼링 된 데이터의) 라이트 백이 동시에 발생하면 압축이 중단되어 라이트 백이 완료되기를 기다립니다.

따라서 모든 프로세스는 느린 장치가 버퍼링 된 데이터 쓰기를 완료하기를 기다리게됩니다.

치료법

OP처럼 메인 메모리를 업그레이드하면 문제를 지연시키는 데 도움이 될 수 있습니다. 그러나 옵션을 고려하지 않는 사람들에게는 두 가지 확실한 해결 방법이 있습니다. 둘 다 커널 재 컴파일과 관련이 있습니다.


2

이것은 내 질문과 비슷하게 들립니다 (응답 이이 질문을 지적한 경우).

https : //.com/questions/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for

그러나 이론은 완전히 다르며 내가 사용한 솔루션은 귀하와 관련이 없지만 완벽하게 작동합니다.

나는 rsync를 사용하고 있었기 때문에 --drop-cache 옵션을 사용했다. (복사본으로 사본을 조금 느리게 만듭니다)


0

내가 실제로 알아 낸 유일한 트릭 : 그놈, 노틸러스가 USB로 파일을 복사하면 100 % 근처에서 멈 춥니 다.

고급 사용자 트릭을 사용하려면 / proc / sys / vm / dirty_bytes를 15728640 (15MB)과 같이 설정하여 Linux에서 사용하는 버퍼 크기를 줄일 수 있습니다. 이는 응용 프로그램이 실제 진행보다 15MB를 초과 할 수 없음을 의미합니다.

부작용은이 설정으로 컴퓨터의 데이터 쓰기 처리량이 낮을 수 있지만 전체적으로 많은 데이터를 쓰는 동안 프로그램이 오래 실행되고 있음을 알면 혼란 스럽습니다. 프로그램은 작업으로 완료된 것으로 보이지만 커널이 실제 작업을 수행함에 따라 시스템이 심하게 지연됩니다. dirty_bytes를 상당히 작은 값으로 설정하면 여유 메모리가 부족하고 갑자기 많은 양의 데이터를 쓰는 프로그램을 실행할 때 시스템이 응답하지 않는 것을 방지 할 수 있습니다.

그러나 너무 작게 설정하지 마십시오! 커널이 1/4 초 이하의 시간에 일반 하드 드라이브로 버퍼를 플러시 할 수 있다고 대략 15MB를 사용합니다. 시스템이 "게으른"느낌이 들지 않게합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.