2.3. Diskdevstat 및 netdevstat
Diskdevstat 및 netdevstat 는 시스템에서 실행되는 모든 애플리케이션의 디스크 활동 및 네트워크 활동에 대한 자세한 정보를 수집하는 SystemTap 툴입니다. 이러한 툴은 PowerTOP 에서 활성화했으며, 이는 초당 모든 애플리케이션에서 CPU 레이닝 수를 표시합니다( 2.2절. “PowerTOP”참조). 이러한 툴에서 수집하는 통계를 사용하면 더 적은 수의 작업이 아닌 많은 작은 I/O 작업으로 전력을 낭비하는 애플리케이션을 식별할 수 있습니다. 전송 속도만 측정하는 다른 모니터링 도구는 이러한 유형의 사용을 식별하는 데 도움이 되지 않습니다.
root
로 다음 명령을 사용하여 SystemTap 으로 이러한 툴을 설치합니다.
~]# yum install tuned-utils-systemtap kernel-debuginfo
명령을 사용하여 툴을 실행합니다.
~]# diskdevstat
또는 명령:
~]# netdevstat
두 명령 모두 다음과 같이 최대 3개의 매개변수를 사용할 수 있습니다.
diskdevstat update_interval total_duration display_histogram
netdevstat update_interval total_duration display_histogram
- update_interval
- 디스플레이 업데이트 사이의 시간(초)입니다. 기본값:
5
- total_duration
- 전체 실행에 대한 시간(초)입니다. 기본값:
86400
(1일) - display_histogram
- 실행 종료 시 수집된 모든 데이터에 대한 히스토그램에 플래그를 지정합니다.
출력은 PowerTOP 와 유사합니다. 다음은 더 긴 diskdevstat 실행의 샘플 출력입니다.
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 5494 0 sda1 0 0.000 0.000 0.000 758 0.000 0.012 0.000 0logwatch 5520 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 5549 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 5585 0 sda1 0 0.000 0.000 0.000 108 0.001 0.002 0.000 perl 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 5429 0 sda1 0 0.000 0.000 0.000 62 0.009 0.009 0.000 crond 5379 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5473 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5415 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5433 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5425 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 5375 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5477 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 5469 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 5419 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5481 0 sda1 0 0.000 0.000 0.000 61 0.000 0.001 0.000 crond 5355 0 sda1 0 0.000 0.000 0.000 37 0.000 0.014 0.001 laptop_mode 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd 5575 0 sda1 0 0.000 0.000 0.000 16 0.000 0.000 0.000 cat 5581 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 5582 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 5579 0 sda1 0 0.000 0.000 0.000 12 0.000 0.001 0.000 perl 5580 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 5354 0 sda1 0 0.000 0.000 0.000 12 0.000 0.170 0.014 s h 5584 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 5548 0 sda1 0 0.000 0.000 0.000 12 0.001 0.014 0.001 perl 5577 0 sda1 0 0.000 0.000 0.000 12 0.001 0.003 0.000 perl 5519 0 sda1 0 0.000 0.000 0.000 12 0.001 0.005 0.000 perl 5578 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 5583 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 5547 0 sda1 0 0.000 0.000 0.000 11 0.000 0.002 0.000 perl 5576 0 sda1 0 0.000 0.000 0.000 11 0.001 0.001 0.000 perl 5518 0 sda1 0 0.000 0.000 0.000 11 0.000 0.001 0.000 perl 5354 0 sda1 0 0.000 0.000 0.000 10 0.053 0.053 0.005 lm_lid.sh
열은 다음과 같습니다.
- PID
- 애플리케이션의 프로세스 ID
- UID
- 애플리케이션이 실행되는 사용자 ID
- DEV
- I/O가 발생한 장치
- WRITE_CNT
- 총 쓰기 작업 수
- WRITE_MIN
- 연속 두 번의 쓰기에 걸린 가장 짧은 시간(초)
- WRITE_MAX
- 연속 두 번 쓰기에 가장 큰 시간 (초)
- WRITE_AVG
- 두 개의 연속 쓰기에 걸린 평균 시간(초)
- READ_CNT
- 총 읽기 작업 수
- READ_MIN
- 연속 두 개의 읽기에 사용된 가장 짧은 시간(초)
- READ_MAX
- 두 개의 연속 읽기에 걸린 가장 큰 시간 (초)
- READ_AVG
- 연속 두 읽기에 걸리는 평균 시간(초)
- 명령
- 프로세스의 이름
이 예에서는 매우 명확한 세 가지 애플리케이션이 존재합니다.
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd
이 세 가지 애플리케이션은
0
보다 큰 WRITE_CNT
를 가지며 이는 측정 중에 어떤 형태의 쓰기를 수행했음을 의미합니다. 그 중 Microsoft 는 가장 큰 쓰기 작업을 수행했으며, 물론 쓰기 사이의 평균 시간이 가장 낮음에 따라 가장 큰 요인이었습니다. 따라서, 가상 시스템은 전력 효율이 없는 애플리케이션에 대해 우려하고 있는지 조사할 수 있는 최상의 후보입니다.
지정된 프로세스 ID의 모든 시스템 호출을 추적하여 strace 및 ltrace 명령을 사용하여 애플리케이션을 더 자세히 검사합니다. 현재 예제에서는 다음을 실행할 수 있습니다.
~]# strace -p 2789
이 예에서 strace 의 출력에 45초마다 반복 패턴이 포함되어 있으며, 이 패턴은 사용자의 쓰기와 파일을 즉시 종료하는 데 필요한 반복 패턴을 열었습니다. 이로 인해 파일 메타데이터(특히 수정 시간)가 변경될 때 하드 디스크에 필요한 물리적 쓰기가 발생했습니다. 최종 수정은 아이콘 업데이트가 발생하지 않은 경우 불필요한 호출을 방지하는 것이었습니다.