느린 디스크 트릭을 명확히 해주세요.

느린 디스크 트릭을 명확히 해주세요.

내가 겪고 있는 문제는 다양한 디스크 전송 속도가 약 25MB/s에서 약 0.3MB/s로 느려진다는 것입니다. 재부팅하면 작동하는 경우도 있지만 반드시 오래 지속되는 것은 아닙니다. 나는 Ubuntu Mate로 이 작업을 수행하고 Xubuntu로 교체했지만 운이 없었습니다.

그래서 다시 무작위로 검색하다가 이 단서를 찾았습니다Linux의 I/O 성능이 예측할 수 없을 정도로 크게 저하됨

거기 작가가 말하길

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

그를 위해 일하세요. 나는 그것을 시도했고효율적인. USB 드라이브는 거의 즉시 분쇄를 멈추고 정상 속도로 돌아왔습니다.

하지만 솔직히 말해서 나는 내가 여기서 무엇을 하고 있는지 전혀 모릅니다. 무엇인가요 /proc/sys/vm/drop_caches? 에코 후에도 파일이 여전히 비어 있습니까? 이것이 작동하는 이유는 무엇입니까? 이렇게 하는 데 문제가 있나요? 하드웨어 문제를 나타냅니까?

부록 1: 백업 작업을 실행하는 루트 crontab에서 동기화와 에코를 실행하는 스크립트를 호출하여 이 작업을 수행합니다. 기본 백업 작업은 오전 3시 30분에 시작되며 그 전과 오전 4시, 5시에 스크립트를 호출합니다. 백업은 오전 4시 스크립트 이후에만 속도가 빨라지는 것처럼 보이므로 구현하기가 그리 간단하지 않습니다. 하지만 나는할 수 있는이제 밤새 시스템 백업을 다시 실행하는 것이 합리적입니다.

부록 2: 인터넷에서 내부 시스템 하드 드라이브로 30GB 정도의 파일 구조를 복사할 때 IIRC의 전송 속도가 0.3MB/s라는 점도 지적해야 할 것 같습니다. 따라서 문제가 느린 USB HDD라는 것이 나에게는 분명하지 않습니다. (시스템이 정상적으로 작동할 때 USB HDD가 특별히 느리지 않은 것 같습니다. 예를 들어 /proc/sys /s 이상에 쓴 후 30Mb입니다.) /vm/dropped_caches. )

부록 3: vm.dirty_ground_ratio, vm.dirty_ratio, vm.dirty_expire_centisecs 및 vm.dirty_writeback_centisecs를 내 OK 노트북의 값으로 변경해도 아무런 영향이 없었습니다.

부록 4: 분명히 이것은 알려진 버그입니다. https://bugs.launchpad.net/ubuntu/+source/linux-meta-lts-trusty/+bug/1333294 거기에 유용한 링크가 있습니다http://flaterco.com/kb/PAE_slowdown.html. /etc/default/grub에서 GRUB_CMDLINE_LINUX="mem=8192M"을 설정하고, update-grub을 실행하고, 재부팅하면 drop_caches를 사용하지 않고도 디스크 쓰기를 합리적인 속도로 복원하는 것처럼 보였습니다. (8GB 메모리가 손실되었습니다.)

답변1

겪고 있는 것 같군요여기에 설명된 내용:

과도한 I/O로 인해 캐시가 과부하될 수도 있습니다. 한 번에 많은 양의 데이터를 디스크에 썼는데, 모든 데이터를 처리하는 동안 시스템이 대규모로 일시 중지되는 것을 본 적이 있습니까? 이러한 일시 중지는 비동기식으로 쓸 데이터가 너무 많다고 캐시가 결정하고(비차단 백그라운드 작업으로 작동하여 애플리케이션 프로세스가 계속되도록 함) 동기식 쓰기로 전환(차단하고 I/ O는 디스크에 커밋되었습니다)

이것도 논의됨이 LWN 기사에서. 기본적으로 느린 USB 드라이브는 지속적인 소규모 쓰기를 처리할 수 있지만 백업 작업이 실행되면 VM 캐시가 채워지고 이제 잠시 동안 느린 동기 쓰기가 발생합니다. "echo 3 > /proc/sys/vm/drop_caches"는 이러한 캐시에서 깨끗한 개체를 제거하여 I/O가 캐시를 사용할 수 있도록 하여 성능을 향상시킵니다.

링크에서 제안한 대로 "vm.dirty_*" 값을 변경해 보세요. 예를 들어 vm.dirty_Background_ratio 및 vm.dirty_ratio입니다.

답변2

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

이를 작성하면 커널이 디렉토리 및 inode와 같은 회수 가능한 슬랩 객체뿐만 아니라 깨끗한 캐시도 삭제하게 됩니다. 일단 떨어뜨리면 그들의 기억은 자유로워집니다.

슬래브 객체와 페이지 캐시를 해제합니다. echo 3 > /proc/sys/vm/drop_caches

"클린 캐시"는 디스크에 있는 캐시와 동일하므로 간단히 삭제하고 나중에 디스크에서 다시 읽을 수 있습니다.

페이지 캐시는 디스크에서 읽은 메모리 페이지의 캐시입니다.https://en.wikipedia.org/wiki/Page_cache

Slab은 연속적인 메모리 조각입니다.https://en.wikipedia.org/wiki/Slab_allocation

관련 정보