로드 실행 중에 IO 대기는 지속적으로 약 60-70%의 높은 값에 도달합니다.

로드 실행 중에 IO 대기는 지속적으로 약 60-70%의 높은 값에 도달합니다.

IOwait 관련 문제가 발생했습니다. 모니터링 중인 서버에서 실행을 로드하는 동안 매우 높은 IOwait 값이 표시됩니다.(50%-70%). 저는 SAR 보고 명령을 사용하여 이 데이터를 생성했습니다. 이상적으로는 값이 다음보다 낮아야 합니다.8%-9%서버가 있기 때문에12코어(1/12~0.08). 나는 이것을 어딘가에서 읽고 그에 따라 가정했습니다.

이렇게 높은 IOwait 문제를 해결하기 위해 수행할 수 있는 작업은 무엇이며, 성능 향상을 위해 확인할 수 있는 서버의 다른 요소와 이 문제가 어떤 관련이 있습니까?

답변1

약간의 Linux 비밀을 공개하겠습니다.Linux에는 신뢰할 수 있는 iowait 통계가 없습니다.. 이것은 단지 사실입니다. ~에서공정(5)우리는 읽고:

iowait (리눅스 2.5.41부터)

(5) I/O가 완료될 때까지 기다리는 시간입니다. 이 값은 다음과 같은 이유로 신뢰할 수 없습니다.

  1. CPU는 I/O가 완료될 때까지 기다리지 않습니다. iowait는 작업이 I/O가 완료될 때까지 기다리는 시간입니다. 완료되지 않은 작업 I/O로 인해 CPU가 유휴 상태가 되면 해당 CPU에 다른 작업이 예약됩니다.

  2. 멀티 코어 CPU에서는 I/O가 완료되기를 기다리는 작업이 어떤 CPU에서도 실행되지 않으므로 CPU당 iowait를 계산하기 어렵습니다.

  3. 경우에 따라 이 필드의 값이 줄어들 수 있습니다.

따라서 내 조언은 Linux에서 iowait 측정을 잊어버리라는 것입니다.

답변2

CPU가 강력할수록 iowait는 더 커지며, 그 반대는 아닙니다.

일반적으로 말하면 iowait를 줄이는 데 도움이 될 수 있습니다.

  1. 가능/적용 가능한 경우 애플리케이션 코드를 최적화하십시오. 예를 들어 차선의 데이터베이스 쿼리는 DBMS가 비효율적인 계획을 수행하게 하고 과도한 디스크 로드를 유발할 수 있습니다.

  2. 읽기 로드가 많으면 RAM을 더 확보하세요.

  3. 스토리지 하위 시스템을 더 빠르게 만듭니다. 더 빠른 디스크, 더 빠른 RAID, 더 빠른 스토리지 컨트롤러, 후기입 캐시. 이것은 그 자체로 과학입니다.

죄송합니다. 이러한 일반적인 질문에 대한 일반적인 답변은 하나뿐입니다.

관련 정보