SharedIT | 묻고 답하기(AMP)

디스크 I/O 체크 관련



리눅스에서 dstat 명령어를 통해 위와같이 disk read/write 체크가 가능합니다.

여기서 궁금한게 어느정도 수준이 정상이고 비정상인지, 임계치를 어느정도로 예상해야하는지 어떻게 확인해보면 될까요?


확인부탁드립니다.

감사합니다.

Tags : 태그가 없습니다.

6개의 답변이 있습니다.

명동쓰레빠
  0 추천 | 일 년 이상 전

디스크별로 I/O성능이 제공되는걸로 알고 있습니다. 그 성능 이상은 가지 않을것 같고 그 수치를 바탕으로 

임계점을 확인 하시는것도...

topkslee
  0 추천 | 일 년 이상 전

말씀해주신 dstat의 값만으로 정상 비정상 정도를 말하기에는

따져봐야할 내용이 많습니다.

서버의 사양, HDD의 타입(HDD,SSD,NVMe등), 네트워크 I/F 사양 등에 따라

높을 수도 낮을 수도 있습니다.

또한 위 수치가 잠시1~2분동안만 높았는지 아니면 1시간동안 계속 높았는지

지속적인 관찰도 필요하구요.

또한 사용하는 Disk의 Type SATA, SAS, SSD, NVMe에 따른 스펙을 보셔야 합니다.

이런 Disk의 스펙을 보면 최대 read/write에 대한 수치가 있는데

이것이 실제이 사용하고 있는 환경에서 수치값과 비교를 해보셔야 얼마정도

사용하는지 비교가 됩니다. 


보통 엔지니어들은 io 볼때 중요하게 체크하는 항목은 

iostat 명령어(iostat 1 -x)에서 await값과 %util 값입니다.

await는 처리되는데 소요된 모든 대기시간(ms)입니다.

이 값이 1이 넘을 경우 모니터링이 필요합니다.

%util은 disk가 버틸수 있는 한계치를 퍼센티지로 나타낸 지표입니다.

이 지표가 80% 넘으면 조치가 필요한 상태이죠.

참고로 NVMe나 장착되면서 %util이 지나치게 높게 나오는 지표 오류도

보고되어 있어 Disk가 NVMe 타입이면 %util 지표는 무시하셔도 되구요.

deerokgo
  0 추천 | 일 년 이상 전

dstat 에 나오는 디스크 I/O인 read write 값으로

정상 비정상을 판단할 수 없다고 생각이 됩니다

다른 방법으로 포커스를 바꿔야 하지 않나 생각 합니다. 

디스크 I/O 가 높은데 HDD로 디스크가 구성 되었다면

SSD 로 교체를 고려해봐야 한다는 거죠. 

네트워크 송 수신 양이 클 때는 bandwidth가 크므로 네트워크 라인 증설을 고려 하는거죠

즉, 그때그때 상황에 따라서 변경하거나 고려해야 할 것들을 찾아가는 방법이 칠요하다고 생각이 됩니다

wansoo
  0 추천 | 일 년 이상 전

첨부한 이미지에서 디스크 I/O와 직접적으로 관련된 내용은 dsk/total 칼럼에 해당되겠고요.


저 내용을 기준으로 정상, 비정상, 임계치를 예상하기는 어려울것 같아 보이네요.

디스크로 부터 109M 를 읽고, 디스크에 9760K를 기록했다는 정보를 가지고 정상, 비정상을 따질 수 있는 건 아닌것 같고요.

성능 좋은 디스크에 읽고/쓰기 할때는 저 수치보다 훨씬 높은 I/O가 발생해도 거뜬히 처리할 수 있을 것이고, 성능이 나쁜 디스크에 읽고/쓰기할때는 저것보다 적은 I/O가 발생해도 심각할 수도 있을 것 같고요.

disk i/o와 관련시켜 paging에 해당하는 칼럼의 값이 증가한다거나 total-cpu-usage의 idle 값이 30 이하로 낮은 값을 유지할 경우에는 disk가 충분한 성능을 내기 어려운 병목이 있다고 봐야 할 것 같고요.


평소 디스크 입출력 상태 정보를 체크해 두었다가 평소 부하량을 체크해 두었다 평균 부하량에 비해 어느만큼 사용되는지에 대한 정보로 비교 검토해 보면 되지 않을까 싶네요.

평균 사용량에 비해 몇배 더 많이 사용되고 있다, 적게 사용되고 있다는 내용으로 평가해 보면 될 것 같고...


디스크 입출력 상태의 정상/비정상을 판단해 보려면...

vmstat 명령의 processor에 대한 b ( blocked queue ) 값의 발생 여부로 판단해 보면 도움이 되지 않을까 하는 생각이 드네요.

# vmstat 1

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 345020 35248 10467096 0 0 0 0 4247 5239 1 1 98 0 0

0 0 0 340788 35436 10468844 0 0 1324 56 4334 5940 3 1 96 0 0

0 0 0 339044 35444 10468728 0 0 0 184 4095 5090 1 1 99 0 0


procs의 b 값이 0이거나 1, 2 정도일 경우가 정상적이라 할 수 있지만, 6 이상의 값이 나오는 경우가 심하다면 프로세서의 블락이 많이 발생하는 비 정상적인 상태로 다양한 추가적인 값들을 검토해서 병목 구간을 개선 시켜줘야 할 지표로 삼으면 되지 않을까 하는 생각이 들고요.

Genghis Khan
  0 추천 | 일 년 이상 전

IOPS(Input/Output Operations Per Second)는 초당 입력/출력 작업을 나타내는 측정 단위입니다. 작업 KiB 단위로 측정되며, 기본 드라이브 기술에 따라 볼륨 유형이 단일 I/O로 계산하는 최대 데이터 용량이 결정됩니다. 일반적으로 HDD의 IOPS 범위는 55-180이며 SSD의 IOPS 3,000 - 40,000 입니다.

THE SSD REVIEW에 따르면 SSD와 HDD의 IOPS는 입출력 단위에 따라 최소 50배에서 200배까지 차이가 생깁니다. 만일 HDD를 사용하고 있고 평소 Disk I/O(%)가 높다면 SSD로 교체하는 것을 고려해봐야 합니다.

Disk Bps Read/Write

Bps Read/Write는 디스크 처리량을 알려주는 지표입니다. 예를 들어 SQL Server는 64kb 블록으로 기록하지만 Windows Server는 4kb 블록을 사용하고 vSphere 하이퍼 바이저는 1MB 블록 아래로 사용 합니다.

Bps Read/Write는 IOPS와 각각의 처리량을 합산한 실제 데이터 처리량을 의미합니다. Bps Read/Write와 IOPS를 통해 현재 블록의 크기를 대략적으로 산정해 볼 수 있습니다.

차바라기
  0 추천 | 일 년 이상 전

회원님이 남긴 글 참고 해보세요~그리고 아래 URL도 참고 하시구요

https://www.sharedit.co.kr/qnaboards/24722

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jevida&logNo=221024972067