Solaris VM에서 CPU I/O 대기 시간 메트릭을 가져오는 명령을 찾고 있습니다.
내가 찾은 결과 vmstat -s
는 다음과 같습니다.
2627 user cpu
62008 system cpu
285180 idle cpu
**0 wait cpu**
매뉴얼 페이지를 보았지만 vmstat
대기 시간에 대한 텍스트를 볼 수 없습니다.
위 출력의 마지막 줄이 I/O 대기 시간이라고 가정할 수 있습니까?
답변1
아니요, 마지막 줄은 I/O 대기 시간을 보고하지 않지만 실제 로드에 관계없이 Solaris에서 0을 표시하도록 하드 코딩되어 있습니다.
멀티코어 및 멀티스레드 CPU의 확산으로 인해 I/O wait
시간은 더 이상 실제 의미를 갖지 않으며 오해의 소지가 있을 수도 있습니다. I/O는 일반적으로 단일 CPU 장치에 바인딩되지 않으므로 I/O 중 하나 이상이 보류 중인 동안 I/O를 기다리는 특정 CPU가 없습니다. 어떤 경우든 프로세스만 I/O가 완료되기를 기다리고 있으며 이 대기는 CPU 주기를 사용하지 않으므로 기술적으로 CPU는 이 시간 동안 유휴 상태이며 다른 작업에 사용할 수 있습니다. Solaris 10부터는 유휴 시간과 구별되지 않는 I/O가 0으로 보고되고, I/O wait
이제 이전 값이 CPU 유휴 시간에 포함되는 것이 사실입니다.
I/O가 걱정된다면 디스크 통계를 살펴보세요 iostat
(예 iostat -xntc 5
: 서비스 시간 svc_t
, 대기열에서 대기 중인 I/O 수 wait
, 대기열이 비어 있지 않은 시간의 비율 %w
등). vmstat
, , 등을 통해 CPU 통계를 보고했습니다 sar
.top
iostat
이 문서는 I/O 성능 문제를 조사하는 데에도 도움이 될 수 있습니다.http://dtrace.org/blogs/brendan/2011/05/11/file-system-latency-part-1/
이것이 문제는 Linux와 동일하게 해석됩니다.
답변2
vmstat는 가상 메모리 사용량을 측정하는 데 사용될 가능성이 더 높으므로 더 나은 제안은 다음을 사용하는 것입니다 iostat
.sar
iostat:
iostat 1 3
tty sd2 ssd35 ssd38 ssd39 cpu
tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id
0 0 0 0 0 162 7 18 1513 24 6 0 0 0 41 27 0 32
0 236 0 0 0 0 0 0 0 0 0 0 0 0 51 27 0 21
CPU 필드에 주의를 기울여야 합니다. us - 이를 사용하고 있는 애플리케이션 수, sy - 운영 체제, wt - 대기 시간, id - CPU의 중간 시간
남자 이름:
sar -u 1 2
SunOS frctfscc16p 5.10 Generic_150400-35 sun4u 08/17/2016
09:29:02 %usr %sys %wio %idle
09:29:03 39 22 0 39
09:29:04 32 21 0 47
Average 36 21 0 43
이 경우 기본적으로 iostat와 동일하다는 것을 알 수 있습니다. 원하는 대로 선택할 수 있습니다. 다른 도구도 있지만 저는 적시에 좋은 측정항목을 제공하기 때문에 sar를 선호합니다.