iostat 명령 출력에서 ​​%util은 무엇을 의미합니까? 100%라면 작업을 더 추가해도 될까요?

iostat 명령 출력에서 ​​%util은 무엇을 의미합니까? 100%라면 작업을 더 추가해도 될까요?

최근 전화 인터뷰에서 이런 질문을 받았습니다. Linux에서 디스크 성능을 확인하는 데 iostat 명령을 사용할 수 있다는 것을 알고 있습니다. 하지만 이 질문에 어떻게 대답해야 할지 모르겠습니다. 이는 디스크가 가득 찼다는 뜻인가요? 감사해요.

답변1

%util에 얼마나 많은 I/O 로드가 있는지 확인할 수 없습니다. 이는 단순히 스케줄러/드라이버/스토리지에서 하나 이상의 IO가 처리되지 않은 샘플 시간의 비율을 나타냅니다.

따라서 iostat 1(샘플링 속도 1초)의 경우 %util이 75%라는 것은 최소 1개의 io가 미해결 상태이고 총 1초 샘플링 시간 중 750밀리초를 저장해야 함을 의미합니다.

실제 로드 측면에서는 단일 물리적 디스크를 다루지 않는 한 유용한 정보를 나타내지 않습니다. 단일 물리적 디스크(예: 직접 연결된 SATA 디스크)의 경우 %util은 디스크가 io에서 작동하는 시간의 로드 비율을 대략적으로 나타냅니다.

단일 물리적 디스크와 단일 물리적 디스크 헤드의 경우 iostat가 100%에 도달하면 해당 마운트 지점에서 다른 io 작업을 수행할 수 없습니다.

로드 포인트는 IO 크기, 쓰기 대 읽기 비율, 로드의 임의성 또는 순서로 구성됩니다. 로드 경고 제한을 결정하는 것은 사용 중인 스토리지 기술과 애플리케이션에 따라 크게 달라집니다.

언젠가 스토리지 제품의 성능을 테스트해 본 경험이 있습니다. 저는 Linux 시스템 측에서 fio 도구를 사용하고 있습니다.

활용도가 100%에 도달하더라도 디스크에 작업 부하를 더 추가할 수 있습니다.

fio --name=fiotest --filename=/xxx/fiotest --size=16Gb --rw=write --bs=1M --direct=1 --numjobs=8 --ioengine=libaio --iodepth=8 --group_reporting --runtime=60

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

sdf              0.00 **2269.67**      0.00 **774805.33**     0.00  **9833.67**   0.00  **81.25**    0.00   **27.00  61.28**     0.00   **341.37   0.44  99.97**

sdd              0.00 **2267.33**      0.00 **774144.00**     0.00  **9835.33**   0.00  **81.27**    0.00   **25.49  57.78**     0.00   **341.43   0.44  99.97**

sde              0.00 **2270.67**      0.00 **775061.33**     0.00  **9833.33**   0.00  **81.24**    0.00   **26.11  59.30**     0.00   **341.34   0.44  99.97**

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

Starting 8 processes
Jobs: 8 (f=0): [f(8)][100.0%][w=519MiB/s][w=518 IOPS][eta 00m:00s]
fiotest: (groupid=0, jobs=8): err= 0: pid=10248: Thu Oct 20 03:26:28 2022
write: IOPS=2002, BW=2003MiB/s (2100MB/s)(117GiB/60040msec); 0 zone resets

fio --name=fiotest --filename=/xxx/fiotest --size=16Gb --rw=read --bs=1M --direct=1 --numjobs=8 --ioengine=libaio --iodepth=8 --group_reporting --runtime=60

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

sdf           **2271.33**    0.00 **775146.67**      0.00  **9842.00**     0.00  **81.25**   0.00   **25.91**    0.00  **58.85   341.27**     0.00   **0.44  99.63**

sdd           **2264.67**    0.00 **774464.00**      0.00  **9846.67**     0.00  **81.30**   0.00   **25.02**    0.00  **56.67   341.98**     0.00   **0.44  99.43**

sde           **2272.33**    0.00 **775061.33**      0.00  **9841.00**     0.00  **81.24**   0.00   **25.36**    0.00  **57.62   341.09**     0.00   **0.44  99.77**

dm-7          **36341.33**    0.00 **2325845.33**      0.00     0.00     0.00   0.00   0.00   **25.42**    0.00 **923.68    64.00**     0.00   **0.03 100.07**

관련 정보