Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.3. Diskdevstat과 netdevstat

Diskdevstatnetdevstat은 시스템에서 실행중인 모든 프로그램의 디스크와 네트워크 활동상황에 대한 자세한 정보를 수집하는 SystemTap 도구입니다. 이러한 도구는 모든 프로그램이 매 초당 CPU를 깨우는 횟수를 보여주는 PowerTOP에 의해 영감을 받아 만들여졌습니다(2.2절. “PowerTOP” 참조). 이러한 도구가 수집한 통계 자료를 통해 프로그램에서 큰 크기의 I/O연산을 적게 수행하는 대신에 작은 크기의 연산을 많이 수행해서 전력을 낭비하는 부분을 구별할 수 있습니다. 전송 속도만을 측정하는 다른 모니터링 도구들은 이러한 사용 유형을 구별하는 데는 별 도움이 되지 않습니다.
SystemTap 도구를 다음 명령으로 설치하십시오:
yum install systemtap tuned-utils kernel-debuginfo
다음 명령을 도구를 실행합니다:
diskdevstat
또는 다음과 같이 합니다:
netdevstat
두 명령 모두, 다음과 같이 세개의 매개변수를 받습니다:
diskdevstat 업데이트_주기 전체_시간 히스토그램_표시
netdevstat 업데이트_주기 전체_시간 히스토그램_표시
업데이트_주기
각 화면 업데이트 사이의 시간(단위:초). 기본값: 5
전체_시간
모니터링을 할 전체 시간(단위:초). 기본값: 86400(하루)
히스토그램_표시
실행이 끝날 때 수집한 전체 데이터를 히스토그램으로 보여줄지 여부
출력은 PowerTOP과 유사합니다. 여기에 KDE 4.2를 돌리는 Fedora 10 시스템에서 수행한 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            
15494     0 sda1            0     0.000     0.000     0.000         758     0.000     0.012     0.000 0logwatch         
15520     0 sda1            0     0.000     0.000     0.000         140     0.000     0.009     0.000 perl              
15549     0 sda1            0     0.000     0.000     0.000         140     0.000     0.009     0.000 perl              
15585     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            
15429     0 sda1            0     0.000     0.000     0.000          62     0.009     0.009     0.000 crond             
15379     0 sda1            0     0.000     0.000     0.000          62     0.008     0.008     0.000 crond             
15473     0 sda1            0     0.000     0.000     0.000          62     0.008     0.008     0.000 crond             
15415     0 sda1            0     0.000     0.000     0.000          62     0.008     0.008     0.000 crond             
15433     0 sda1            0     0.000     0.000     0.000          62     0.008     0.008     0.000 crond             
15425     0 sda1            0     0.000     0.000     0.000          62     0.007     0.007     0.000 crond             
15375     0 sda1            0     0.000     0.000     0.000          62     0.008     0.008     0.000 crond             
15477     0 sda1            0     0.000     0.000     0.000          62     0.007     0.007     0.000 crond             
15469     0 sda1            0     0.000     0.000     0.000          62     0.007     0.007     0.000 crond             
15419     0 sda1            0     0.000     0.000     0.000          62     0.008     0.008     0.000 crond             
15481     0 sda1            0     0.000     0.000     0.000          61     0.000     0.001     0.000 crond             
15355     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          
15575     0 sda1            0     0.000     0.000     0.000          16     0.000     0.000     0.000 cat               
15581     0 sda1            0     0.000     0.000     0.000          12     0.001     0.002     0.000 perl              
15582     0 sda1            0     0.000     0.000     0.000          12     0.001     0.002     0.000 perl              
15579     0 sda1            0     0.000     0.000     0.000          12     0.000     0.001     0.000 perl              
15580     0 sda1            0     0.000     0.000     0.000          12     0.001     0.001     0.000 perl              
15354     0 sda1            0     0.000     0.000     0.000          12     0.000     0.170     0.014 sh                
15584     0 sda1            0     0.000     0.000     0.000          12     0.001     0.002     0.000 perl              
15548     0 sda1            0     0.000     0.000     0.000          12     0.001     0.014     0.001 perl              
15577     0 sda1            0     0.000     0.000     0.000          12     0.001     0.003     0.000 perl              
15519     0 sda1            0     0.000     0.000     0.000          12     0.001     0.005     0.000 perl              
15578     0 sda1            0     0.000     0.000     0.000          12     0.001     0.001     0.000 perl              
15583     0 sda1            0     0.000     0.000     0.000          12     0.001     0.001     0.000 perl              
15547     0 sda1            0     0.000     0.000     0.000          11     0.000     0.002     0.000 perl              
15576     0 sda1            0     0.000     0.000     0.000          11     0.001     0.001     0.000 perl              
15518     0 sda1            0     0.000     0.000     0.000          11     0.000     0.001     0.000 perl              
15354     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
두 연속된 읽기 동작 사이의 평균 시간(초)
COMMAND
프로세스의 이름
이 예에서 3가지 프로그램이 가장 눈에 띕니다:
  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
이 세개의 프로그램은 WRITE_CNT0보다 큽니다. 이는 이들이 측정하는 동안 어떤 데이터를 기록했다는 것을 의미합니다. 이들 중에서 plasma는 상당히 큰 차이로 가장 나쁜 결과를 보여줍니다: 그것은 가장 많은 쓰기 동작을 수행했고, 또한 쓰기 동작 사이의 평균 시간도 가장 짧습니다. Plasma는 따라서 여러분이 에너지를 낭비하는 프로그램에 대해 우려하고 있다면 검사해야할 가장 좋은 대상이 됩니다.
straceltrace를 사용해 주어전 프로세스 ID의 모든 시스템 호출을 검사함으로써 더 자세히 프로그램을 살펴보십시오. 본 예에서, 다음과 같이 할 수 있습니다:
strace -p 2789
이 예의 strace의 출력에는 45초마다 반복되는 패턴이 있습니다. 그것은 사용자의 KDE 아이콘 캐시 파일을 쓰기위해 연 직후 그 파일을 닫는 것입니다. 이것은 파일 메타정보 부분(특히 마지막 변경 시간 정보)이 바뀌었기 때문에 하드 디스크에 물리적인 쓰기를 야기합니다. 최종 수정본에서는 아이콘이 실제 업데이트 되지 않은 경우 이러한 불필요한 시스템 콜이 일어나지 않도록 변경되었습니다.