WindyHana's Solanara: NicStat

목차

개요

설치

.gz 파일에 솔라리스(스팍 및 x86)과 리눅스 바이너리 및 소스, 맨페이지 파일이 같이 들어있다. 단순히 복사하면 된다.
root@wl ~ # wget http://blogs.sun.com/roller/resources/timc/nicstat/nicstat-1.21.tar.gz
root@wl ~ # mkdir nicstat
root@wl ~ # cd nicstat
root@wl ~/nicstat # tar xvfz ../nicstat-1.21.tar.gz
root@wl ~/nicstat # mv nicstat.Solaris.i386 /usr/local/bin/nicstat
root@wl ~/nicstat # mv nicstat.1 /usr/local/man/man1
소스설치
root@wl ~/nicstat # mv Makefile.Solaris Makefile
root@wl ~/nicstat # make
root@wl ~/nicstat # make install 1)
1) /usr/local에 설치된다. 위치를 바꾸려면 [make BASEDIR=/install/path install]와 같이 한다.

사용

실행방법은 간단하다. 아래와 같이 하면 된다. -h 옵션을 붙이면 도움말이 나온다.
root@wl ~ # nicstat 5
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:33:16      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
13:33:16     bge0    0.03    0.01    0.21    0.16   125.5   88.07  0.00   0.00
13:33:16     bge1    0.00    0.00    0.01    0.00   136.8   68.89  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:33:21      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
13:33:21     bge0    0.12    0.15    1.00    1.00   119.0   156.2  0.00   0.00
13:33:21     bge1    0.00    0.01    0.00    0.20    0.00   64.00  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:33:26      lo0    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
13:33:26     bge0    0.01    0.08    0.20    0.20   64.00   430.0  0.00   0.00
13:33:26     bge1    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
Ctrl+C
root@wl ~ #
첫번째 라인은 시스템 부트 이후의 통계가 표시된다.
Time: 현재 시간
Int: 인터페이스명
rKB/s: 초당 수신 바이트
wKB/s: 초당 송신 바이트
rPk/s: 초당 수신 패킷
wPk/s: 초당 송신 패킷
rAvs: 수신 패킷당 평균 크기(바이트)
wAvs: 송신 패킷당 평균 크기(바이트)
%Util: 인터페이스 사용율
Sat: Saturation. 오류 회수. 포화 상태를 표시.

kstat 라이브러리

root@wl ~ # cat kstattest.c
// cc -lkstat -o kstattest kstattest.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 ~ # cc -lkstat -o kstattest kstattest.c
root@wl ~ # ./kstattest
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 ~ # 
Twitter RSS IconTexto 올바른 XHTML 1.0 Transitional 입니다 올바른 CSS입니다!