디스크 I/O가 CPU를 차지하는 것을 어떻게 방지합니까?

디스크 I/O가 CPU를 차지하는 것을 어떻게 방지합니까?

저는 쿼드 코어 i7 프로세서에서 Debian Jessie를 실행하고 있는데 하이퍼스레딩으로 인해 8개의 코어가 표시됩니다. 디스크 부하가 높으면 htop에 표시된 것처럼 8개 코어 모두에 대해 io-wait가 최대화됩니다. 이로 인해 인터페이스가 매우 느려지고(저는 Gnome을 사용합니다) I/O가 완료될 때까지 시스템이 완전히 멈추는 경우가 있습니다.

이 문제를 어떻게 진단해야 합니까? 이런 일이 발생하지 않도록 하려면 어떤 설정을 조정해야 합니까?

단일 하드 드라이브를 사용하고 있는데 SMART 검사 결과 정상인 것으로 나타났습니다.

편집: 몇 가지 사항을 명확히 하기 위해 저는 가속 I/O에 관심이 없습니다. 다른 작업을 하는 동안 백그라운드에서 실행되도록 하고 싶습니다. 현재 SSD로 업그레이드하는 것은 옵션이 아닙니다.

답변1

I/O 성능을 조정하는 방법에는 여러 가지가 있습니다.

  • 파일 시스템 선택 - 일반적인 데이터를 기반으로 파일 시스템을 선택합니다. 일부 파일 시스템은 많은 수의 작은 파일을 더 잘 처리하고 일부는 대용량 파일을 잘 처리하며 일부는 동시에 여러 파일에 액세스(특히 생성)할 때 그렇지 않습니다. 조각 모음은 회전하는 디스크 드라이브에 도움이 될 수 있습니다(플래시 기반 장치의 경우만큼은 아니지만 차이는 여전히 존재합니다).

  • 파일 시스템 조정 - 최신 파일 시스템에는 파일 시스템의 성능을 한 방향 또는 다른 방향으로 밀어 넣을 수 있는 많은 옵션(생성 시 및 설치 시)이 있습니다. 가장 좋은 예는 일기를 쓰는 방법입니다.

  • DMA 설정 - 이 작업은 수년 동안 자동으로 수행되었지만 확인해도 전혀 문제가 되지 않습니다( hdparm -i친구입니다).

특히 Linux의 경우(그러나 다른 커널의 경우에도 유사할 수 있음):

  • THP - Transparent Huge Pages는 성능 저하를 유발하는 데 사용됩니다. IIRC 이 문제는 얼마 전에 (적어도 어느 정도) 해결되었습니다. USB로 복사하거나 USB에서 복사하는 것이 문제인 경우 아마도 이 방향을 살펴봐야 할 것입니다.투명 거대 페이지 비활성화THP를 비활성화하는 방법에 대한 좋은 출발점이 될 수 있습니다.

  • 커널 I/O 스케줄러는 성능에 상당한 영향을 미칩니다. 어떤 사람들은 CFQ 대신 마감일 스케줄러를 사용하는 것을 옹호합니다. CFQ는 더 복잡하고 때로는 지나치게 생각하는 경향이 있다고 합니다.

이 외에도 경우에 따라 I/O가 많이 발생하는 경우도 있습니다. USB 메모리 카드 리더기에서 하드 드라이브로, 하드 드라이브에서 USB 플래시 드라이브로 파일 복사를 시작하고 웹을 탐색할 때(일부 브라우저는 fsync()충돌 발생 시 콘텐츠를 복구할 수 있는지 확인하기 위해 많은 작업을 수행할 수 있습니다) , 이메일 다운로드, P2P 클라이언트 실행, 영화 재생을 동시에 수행하면 물리적 디스크와 파일 시스템에 병목 현상이 발생할 수 있습니다. 어떤 경우에는 주의 깊게 구성한(적절한 스트라이프 크기 및 구성 드라이브 수로 읽기) RAID0이 문제를 완화하는 데 도움이 될 수 있습니다.

관련 정보