nicstat, SEToolkit, kstat - 윈디하나의 솔라나라

목차

개요

nicstat

설치

사용

실행방법은 간단하다. 아래와 같이 하면 된다. -h 옵션을 붙이면 도움말이 나온다.
root@wl ~ # nicstat -h
USAGE: nicstat [-hvnsxpztualMU] [-i int[,int...]]
   [interval [count]]

         -h                 # help
         -v                 # show version (1.95)
         -i interface       # track interface only
         -n                 # show non-local interfaces only (exclude lo0)
         -s                 # summary output
         -x                 # extended output
         -p                 # parseable output
         -z                 # skip zero value lines
         -t                 # show TCP statistics
         -u                 # show UDP statistics
         -a                 # equivalent to "-x -u -t"
         -l                 # list interface(s)
         -M                 # output in Mbits/sec
         -U                 # separate %rUtil and %wUtil
    eg,
       nicstat              # print summary since boot only
       nicstat 1            # print every 1 second
       nicstat 1 5          # print 5 times only
       nicstat -z 1         # print every 1 second, skip zero lines
       nicstat -i hme0 1    # print hme0 only every 1 second
root@wl ~ # nicstat -M 5
    Time      Int   rMbps   wMbps   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
11:06:17      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
11:06:17    gani0    0.00    0.00    0.01    0.02   130.7  1326.1  0.00   0.00
11:06:17    iprb0    0.00    0.00    0.02    0.01  1176.3   534.2  0.00   0.00
    Time      Int   rMbps   wMbps   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
11:06:22      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
11:06:22    gani0    0.00    0.00    1.60    0.80   60.00   54.00  0.00   0.00
11:06:22    iprb0    0.00    0.00    1.40    2.40   60.00   98.00  0.00   0.00
Ctrl+C
root@wl ~ # nicstat -U 5
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %rUtil %wUtil
19:51:13      lo0    0.00    0.00    0.05    0.05    0.00    0.00   0.00   0.00
19:51:13    gani0    0.39    0.54    0.51    0.55   767.7  1002.6   0.03   0.04
19:51:13    iprb0    0.53    0.71    0.68    0.76   794.3   961.6   0.00   0.01
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %rUtil %wUtil
19:51:18      lo0    0.00    0.00   19.16   19.16    0.00    0.00   0.00   0.00
19:51:18    gani0    0.00    4.72    0.00    3.19    0.00  1514.0   0.00   0.00
19:51:18    iprb0    5.36   15.87   10.78   13.57   509.4  1196.9   0.04   0.13
Ctrl+C
root@wl ~ # nicstat -p
1285740541:lo0:0.000:0.000:0.002:0.002:0.00:0.00
1285740541:bge0:4.056:29.15:13.77:24.23:0.27:0.00
1285740541:bge1:29.30:7.429:27.28:17.05:0.30:0.00
root@wl ~ # 
첫번째 라인은 시스템 부트 이후의 통계가 표시된다. 현재의 상태는 두번째 출력 부터다.
Time: 현재 시간
Int: 인터페이스명
rKB/s: 초당 수신 바이트
rMbps: 초당 수신 비트. (Mbits/sec)
wKB/s: 초당 송신 바이트
wMbps: 초당 송신 비트. (Mbits/sec)
rPk/s: 초당 수신 패킷
wPk/s: 초당 송신 패킷
rAvs: 수신 패킷당 평균 크기(바이트)
wAvs: 송신 패킷당 평균 크기(바이트)
%Util: 인터페이스 사용율
Sat: 포화도(Saturation) 1)
%rUtil: 수신 인터페이스 사용율
%wUtil: 송신 인터페이스 사용율
1) 네트워크 대역폭 포화로 인한 전송 대기 회수. 오류는 아니지만 전송속도에 큰 영향을 미친다. 원인은 많은데 브로드캐스팅 스톰인경우도 있고, 네트워크 토플로지상의 문제일수도 있다. 네트워크의 모든 사항을 체크해봐야 한다.

SE Toolkit

설치

root@wl ~/src # wget http://downloads.sourceforge.net/project/setoolkit/SE%20Toolkit/SE%20Toolkit%203.5.1/setoolkit-3.5.1.tar.gz
root@wl ~/src # tar xvfz setoolkit-3.5.1.tar.gz
root@wl ~/src # cd setoolkit-3.5.1
root@wl ~/src/setoolkit-3.5.1 # cat INSTALL.SRC
root@wl ~/src/setoolkit-3.5.1 # CFLAGS=-m64 LDFLAGS=-m64 ./configure \
  --libdir=/opt/RICHPse/lib/amd64 \
  --libexecdir=/opt/RICHPse/libexec/amd64 \
  --docdir=/opt/RICHPse/doc \
  --with-se-pkg-dir=/opt/RICHPse \
  --with-se-include-dir=/opt/RICHPse/include \
  --with-se-examples-dir=/opt/RICHPse/examples
  1)
root@wl ~/src/setoolkit-3.5.1 # make
root@wl ~/src/setoolkit-3.5.1 # make install
1) /opt/RICHPse 에 설치한다. 위 configure 명령은 amd64 버전의 경우로, 다른 아키텍처라면 INSTALL.SRC 파일을 참고해 다른 명령을 줘야 한다.

사용

/opt/RICHPse/examples 에 많은 예제가 있다. 몇가지만 소개하고자 한다.

kstat 라이브러리

kstat.c
(730 바이트)
/*
    kstat sample
    WindyHana's Solanara http://www.solanara.net/
    cc -lkstat -o kstat kstat.c
*/
#include <kstat.h>
#include <stdio.h>

void my_module_display(kstat_t * ksp) {
    printf("%s %s %s", ksp->ks_module, ksp->ks_name, ksp->ks_class);
}

void my_io_display(kstat_io_t kio) {
    printf(" %d %d\n", kio.nread, kio.nwritten);
}

void main() {
    kstat_ctl_t * kc;
    kstat_t * ksp;
    kstat_io_t kio;

    kc = kstat_open();
    for (ksp = kc->kc_chain; ksp != NULL; ksp = ksp->ks_next) {
        if (ksp->ks_type == KSTAT_TYPE_IO) {
            kstat_read(kc, ksp, &kio);
            my_module_display(ksp);
            my_io_display(kio);
        }
    }
    kstat_close(kc);
}
root@wl ~ # ./kstat
cmdk cmdk0 disk 338056704 0
cmdk cmdk1 disk 317503488 0
usba ehci0,total usb_byte_count 0 0
usba ehci0,ctrl usb_byte_count 0 0
usba ehci0,isoch usb_byte_count 0 0
usba ehci0,bulk usb_byte_count 0 0
usba ehci0,intr usb_byte_count 0 0
...
usba uhci3,total usb_byte_count 0 0
usba uhci3,ctrl usb_byte_count 0 0
usba uhci3,isoch usb_byte_count 0 0
usba uhci3,bulk usb_byte_count 0 0
usba uhci3,intr usb_byte_count 0 0
sd sd2 disk 88 0
nfs nfs1 nfs 0 0
root@wl ~ # 
RSS ATOM XHTML 5 CSS3