.\" .\" Copyright (c) 1998 Kenneth D. Merry. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %Id: devstat.3,v 1.3 1999/01/06 04:59:53 obrien Exp % .\" .\" $FreeBSD$ .Dd May 21, 1998 .Dt DEVSTAT 3 .Os FreeBSD 3.0 .Sh ̾�� .Nm devstat .Nd �ǥХ������ץ桼�ƥ���ƥ��饤�֥�� .Sh �� .Fd #include <devstat.h> .Ft int .Fn getnumdevs "void" .Ft long .Fn getgeneration "void" .Ft int .Fn getversion "void" .Ft int .Fn checkversion "void" .Ft int .Fn getdevs "struct statinfo *stats" .Ft int .Fo selectdevs .Fa "struct device_selection **dev_select" .Fa "int *num_selected" .Fa "int *num_selections" .Fa "long *select_generation" .Fa "long current_generation" .Fa "struct devstat *devices" .Fa "int numdevs" .Fa "struct devstat_match *matches" .Fa "int num_matches" .Fa "char **dev_selections" .Fa "int num_dev_selections" .Fa "devstat_select_mode select_mode" .Fa "int maxshowdevs" .Fa "int perf_select" .Fc .Ft int .Fo buildmatch .Fa "char *match_str" .Fa "struct devstat_match **matches" .Fa "int *num_matches" .Fc .Ft int .Fo compute_stats .Fa "struct devstat *current" .Fa "struct devstat *previous" .Fa "long double etime" .Fa "u_int64_t *total_bytes" .Fa "u_int64_t *total_transfers" .Fa "u_int64_t *total_blocks" .Fa "long double *kb_per_transfer" .Fa "long double *transfers_per_second" .Fa "long double *mb_per_second" .Fa "long double *blocks_per_second" .Fa "long double *ms_per_transaction" .Fc .Ft long double .Fo compute_etime .Fa "struct timeval cur_time" .Fa "struct timeval prev_time" .Fc .Sh ���� .Nm devstat �饤�֥��ϡ������ͥ� .Xr devstat 9 ���ե��������������Τ� �����ʴؿ��Υ饤�֥��Ǥ��������ͥ� .Xr devstat 9 ���ե������ϡ� .Xr sysctl 3 �ˤ�äƥ桼���������������Ǥ��ޤ��� .Pp .Fn getnumdevs �ϡ������ͥ���� .Nm devstat ���֥����ƥ�ȤȤ����Ͽ���줿 �ǥХ������ֹ���֤��ޤ��� .Pp .Fn getgeneration �ϡ������ͥ���ΥǥХ��� .Nm devstat �ꥹ�Ȥθ��ߤ������ �֤��ޤ��� .Pp .Fn getversion �ϡ����ߤΥ����ͥ� .Nm devstat �ǥХ����С��������֤��ޤ��� .Pp .Fn checkversion �ϡ������ͥ� .Nm devstat �С��������Ф��� userland devstat ������å����ޤ��� 2 �Ĥ�Ʊ��ξ�硢�������֤���ޤ��������Ǥʤ����ϡ� .Va devstat_errbuf �˳������륨�顼��ɽ���� -1 ���֤��ޤ��� .Pp .Fn getdevs �ϡ��ǥХ��������פθ��ߤΥꥹ�Ȥ���Ф��ơ����ꤵ�줿 .Va statinfo ��¤������ޤ��� .Va statinfo ��¤�� .Aq Pa devstat.h �ˤ���ޤ��� .Bd -literal -offset indent struct statinfo { long cp_time[CPUSTATES]; long tk_nin; long tk_nout; struct devinfo *dinfo; struct timeval busy_time; }; .Ed .Pp .Fn getdevs �� .Va statinfo ��¤����꿶����Τ�ͽ�������ޤ��������� .Va dinfo ���֥�����Ȥ���꿶����Τ�ͽ�����ޤ��� .Va dinfo ���֥�����Ȥˤϼ��Υ�����Ȥ����äƤ��ޤ��� .Bd -literal -offset indent struct devinfo { struct devstat *devices; u_int8_t *mem_ptr; long generation; int numdevs; }; .Ed .Pp .Va kern.devstat.all sysctl �ѿ��ˤϡ� .Nm devstat ��¤���������äƤ��ޤ������������Ƭ�ϸ��ߤ� .Nm devstat ����Ǥ������夬�Хåե�����Ƭ�ˤ�����ͳ�ϡ� .Nm devstat ���פ˥����������Ƥ��� userland ���եȥ���������ưŪ�� ��������б����������ֹ��ξ����ưŪ������褦�ˤ��뤿��Ǥ��� ���饤����ȥ��եȥ��������̤� .Nm sysctl �ѿ� ( ������ص��Τ�������ѤǤ��ޤ� ) ���̤��������ֹ�����뤳�Ȥ� �������줿��硢�ǥХ����Υꥹ�Ȥϡ����饤����Ȥ�������������ȡ� ���饤����Ȥ��ǥХ����ꥹ�Ȥ��������δ֤��Ѳ������ǽ��������ޤ��� .Pp .Va devinfo ��¤�� .Va mem_ptr ���֥�����Ȥϡ���꿶��줿�����ؤ��ݥ��Ǥ��ꡢɬ�פǤ���С� .Fn getdevs �ˤ�äƥ��������ѹ�����ޤ��� .Va devinfo ��¤�ΥǥХ������֥�����Ȥϴ���Ū�ˡ� .Va kern.devstat.all .Nm sysctl �ѿ����� .Nm devstat ��¤���������Ƭ��ؤ��ݥ��Ǥ��� .Nm devinfo ��¤������ ���֥�����Ȥˤϡ� .Va kern.devstat.all .Nm sysctl �ѿ�����������ֹ椬�ޤޤ�Ƥ��ޤ��� .Va devinfo ��¤�� .Va numdevs ���֥�����Ȥˤϡ������ͥ� .Nm devstat ���֥����ƥ����Ͽ���줿�ǥХ����θ��ߤ��ֹ椬���äƤ��ޤ��� .Pp .Fn selectdevs �ϡ�����ο�����äˤ���ɽ������ǥХ��������ޤ��� .Bl -tag -width flag .It ����ǥХ��� ���ꤵ�줿�ǥХ����Ϻǽ������ͥ���̤Ǥ��������ϡ����̤ˡ� �桼���ˤ��̾���ˤ����ꤵ�줿�ǥХ��������Ȥ��С� da0, da1, cd0 �Ǥ��� .It �ޥå��ѥ����� �����Υѥ�����桼�����Ϥ��� .Fn buildmatch �ˤ�ä��������줿�ѥ�����ޥå����Ǥ��� .It ��ǽ ��ǽ�⡼�ɤ�ͭ���ʾ�硢�ǥХ����ϡ� .Fn selectdevs ���Ϥ���� .Va device_selection ��¤��� .Va bytes �ե�����ɤ���äˤ��ƥ����Ȥ���ޤ��� .Va bytes �ͤϡ��������Ǥϡ��桼�����ݼ餹��ɬ�פ�����ޤ�������Ū�ˤϡ������ .Nm devstat �饤�֥��롼����ǹԤ����ǽ��������ޤ����ǥХ�����̾���ޤ��� �ѥ�����ˤ�ä�����Ƥ��ʤ���硢��ǽ���ץ����ɤ������ƥ���� �ƥǥХ�����������������ǽ�ˤ�äƥ����Ȥ��ޤ����ǥХ�����̾���ޤ��� �ѥ�����ˤ�ä�����Ƥ����硢��ǽ���ץ����ɤϤ����������º�Ť��� ���줿�ǥХ����δ֤Ǥ��������Ȥ��ޤ��� .It devstat �ꥹ����ν�� ����⡼�ɤ� DS_SELECT_ADD �����ꤵ�졢������ .Va maxshowdevs ̤���ΥǥХ���������Ƥ����硢 .Fn selectdevs ����ưŪ�� .Va maxshowdevs �ǥХ����åȥ��åפ��ޤ��� .El .Pp .Fn selectdevs �ϡ����� 4 �ĤΥ⡼�ɤ������Ԥ��ޤ��� .Bl -tag -width DS_SELECT_ADDONLY .It DS_SELECT_ADD �ɲå⡼�ɤǡ� .Fn selectdevs �ϡ�̾���ޤ��ϰ��ץѥ�����ˤ�äƻ��ꤵ�줿 ����Ƥ��ʤ��ǥХ��������ޤ����ޤ�������� .Nm devstat �ν���Ǥ���˥ǥХ��������ޤ��������ǥХ����ο��� .Va maxshowdevs ���������ʤ�ޤǡ��ޤ��Ϥ��٤ƤΥǥХ����������ޤǤǤ��� .It DS_SELECT_ONLY only �⡼�ɤǡ� .Fn selectdevs �ϡ����ߤ������٤ƥ��ꥢ���� ̾���ޤ��ϰ��פ���ѥ�����ǻ��ꤵ�줿�ǥХ������������ޤ��� .It DS_SELECT_REMOVE ����⡼�ɤǡ� .Fn selectdevs �ϡ�̾���ޤ��ϰ��ץѥ�����ˤ�äƻ��ꤵ�줿�ǥХ��������ޤ��� �ɲåǥХ��������ޤ��� .It DS_SELECT_ADDONLY �ɲäΤߥ⡼�ɤǡ� .Fn selectdevs �ϡ�̾���ޤ��ϰ��פ��� �ѥ�����ǻ��ꤵ�줿����ʤ��ǥХ��������ޤ����������Ǥϡ������ �ɲå⡼�ɤ�Ʊ��Ǥ��������������ꤵ�줿�ʳ��ΥǥХ��������ޤ��� .El .Pp ���٤Ƥ�����⡼�ɤǡ� .Fn selectdevs �ϡ� .Va maxshowdevs �ǥХ�����ۤ���ǥХ��������ޤ���1 �Ĥ��㳰�ϡ� .Dq top �⡼�ɤˤ��ꡢ�ǥХ���������Ƥ��ʤ��Ȥ��Ǥ������ξ�硢 .Fn selectdevs �ϡ������ƥ���γƥǥХ��� �����ޤ������饤����ȥץ������ϡ�����ΥǥХ��������դ�ʧ�����ɤ��� ���ꤹ��Ȥ��ˡ�����ν�������դ�ʧ��ɬ�פ�����ޤ�������Ϥޤ��� ư��Ǥ��ꡢ����˹�θ����ɬ�פ�����ȹͤ����ޤ��� .Pp .Fn selectdevs �ϡ����饤����Ȥˤ�ä��Ϥ��줿 .Va dev_select ��¤�γ�꿶��ȥ������ѹ���������ޤ��� .Fn selectdevs �ϡ� .Va numdevs �ե�����ɤ� .Va current_generation �ե�����ɤ���Ѥ��ơ����ߤ� .Nm devstat ����ȥǥХ����ο������פ��ޤ��� .Va num_selections �� .Va numdevs ��Ʊ���Ǥʤ���硢�ޤ��� .Va select_generation �� .Va current_generation ��Ʊ���Ǥʤ���硢 .Fn selectdevs �ϡ�����ꥹ�Ȥ�ɬ�פ˱����ƥ������ѹ��������������������ľ���ޤ��� .Pp .Fn buildmatch �ϡ�����ޤǶ��ڤ�줿���ץ��ȥ���ꡢ .Fn selectdevs ������ \fBdevstat_match\fR ��¤�˥���ѥ��뤷�ޤ������ץ��ȥ�η����� ���ΤȤ���Ǥ��� .Pp .Bd -literal -offset indent device,type,if .Ed .Pp .Fn buildmatch �ϡ�ɬ�פ˱����ơ����ץꥹ�Ȥγ�꿶��ȺƳ�꿶��� �������ޤ����������Ǵ��Τΰ��ץ����פˤϼ��Τ�Τ��ޤޤ�ޤ��� .Pp .Bl -tag -width indent -compact .It �ǥХ���������: .Bl -tag -width 123456789 -compact .It da �����쥯�ȥ��������ǥХ��� .It sa ��������륢�������ǥХ��� .It printer �ץ�� .It proc �ץ����å��ǥХ��� .It worm ���� 1 ���ɤ��ʣ���ǥХ��� (Write Once Read Multiple devices) .It cd CD �ǥХ��� .It scanner ������ʥǥХ��� .It optical ���إ���ǥХ��� .It changer �����ѹ� (Medium Changer) �ǥХ��� .It comm �̿��ǥХ��� .It array ���ȥ졼������ǥХ��� .It enclosure �Ϥߥ����ӥ��ǥХ��� (Enclosure Services devices) .It floppy �ե��åԡ��ǥХ��� .El .Pp .It ���ե�����: .Bl -tag -width 123456789 -compact .It IDE ����ɥ饤���Żҹ��إǥХ��� (Integrated Drive Electronics devices) .It SCSI ��������ԥ塼�������ƥ।�ե������ǥХ��� .It other ¾�ΥǥХ������ե����� .El .Pp .It �ѥ����롼: .Bl -tag -width 123456789 -compact .It pass �ѥ����롼�ǥХ��� .El .El .Pp .Fn compute_stats �ϡ����ޤ��ޤʥǥХ������פ����뤿��δ�ñ����ˡ�Ǥ��� .Va current �� .Va etime �� 2 �Ĥΰ�����ɬ�ܤǤ���¾�γư����ϥ��ץ����Ǥ��� �ۤȤ�ɤΥ��ץꥱ�������ξ�硢�桼���� .Va current �� .Va previous �� .Nm devstat ��¤��ξ������ꤷ�����Ȼפ���ΤǤ���������֤��Ϥä����פ� ���Ǥ���褦�ˤ��뤿��ˤǤ��������ˤ�äƤϡ������ƥ൯ư����� ���פ�����뤿��ˡ��桼���� .Va previous �ΰ����ˤĤ��� NULL �ݥ����Ϥ����Ȥ�����ޤ������ξ�硢 .Fn compute_stats �ϡ� .Va current �ι�¤��ι���֤���Ѥ��ơ� .Va etime ���֤��Ϥ����פ�����ޤ��� .Fn compute_stats ���������ǽ���Τ���Ƽ����פϡ��ؿ�������ΤǼ���������� ɬ�פ�����ޤ�����������������뤿��ˡ��ѿ�̾�Υꥹ�ȤȤ����������� ���פ��ޤ��� .Bl -tag -width transfers_per_second .It total_bytes .Va previous �μ����� .Va current �μ����δ֤ǡ��ɤ��Ƚ��ߤ� ξ����������ǥХ�����ž�������Х��Ȥι���Ǥ��� .Va previous �� NULL �ξ�硢��̤� .Va current ��Ϳ�������פ��ɤ��Ƚ��ߤǤ��� .It total_transfers .Va previous �μ����� .Va current �μ����δ֤Ǵ�λ�����ž���ι���Ǥ��������� NULL �ξ�硢��̤� .Va current ��˥ꥹ�Ȥ����ȥ�������ι���Ǥ��� .It total_blocks ����Ū�� .Va total_bytes ��ǥХ����֥��å��������ǽ���������ΤǤ����֥��å��������� .Sq 0 �Ȥ��ƥꥹ�Ȥ���Ƥ����硢�ǥХ����֥��å��������ϡ� �ǥե���Ȥ� 512 �Х��Ȥˤʤ�ޤ��� .It kb_per_transfer ¬����֤δ֤�ž�����Ȥ�ʿ�� KB ���Ǥ��� .It transfers_per_second �ä��Ȥ�ž����ʿ�ѿ��Ǥ��� .It mb_per_second �ä��Ȥ�ʿ�� MB �Ǥ��� .It locks_per_second �ä��Ȥ�ʿ�ѥ֥��å��Ǥ����ǥХ����֥��å��������� .Sq 0 �ξ�硢�ǥե���ȤΥ֥��å������� 512 �Х��Ȥ�����˻��Ѥ���ޤ��� .It ms_per_transaction �ȥ������Ȥ�ʿ�ѥߥ��ÿ��Ǥ��� .El .Pp .Fn compute_etime �ϡ�2 �Ĥ� .Va timeval ��¤�δ֤���ñ�̤ΰ㤤�Ф����ñ����ˡ�Ǥ�������ϡ� .Fn getdevs �ؿ� ( .Va statinfo ��¤���� ) �������ߤ� .Nm devstat �ꥹ�Ȥ���Ф����Ӥˡ� .Fn getdevs �ؿ�����Ͽ��������ȤȤ�˺Ǥ����Ū�˻��Ѥ���ޤ��� .Sh ����� .Fn getnumdevs , .Fn getgeneration ������� .Fn getversion �ϡ��ؼ����줿 \fBsysctl\fR �ѿ����֤��ޤ��� �ѿ�����Ф��Ȥ��˥��顼�����ä����� -1 ���֤��ޤ��� .Pp .Fn checkversion �ϡ������ͥ�� userland devstat �С�������פ����硢 0 ���֤��ޤ������פ��ʤ���硢 -1 ���֤��ޤ��� .Pp .Fn getdevs �� .Fn selectdevs �ϡ����顼�ξ��� -1 ���֤������顼���ʤ����� 0 ���֤��� �ǥХ����ꥹ�Ȥޤ��������ǥХ������Ѳ����Ƥ������ 1 ���֤��ޤ��� .Fn getdevs ���������ͤ� 1 �Ǥ���Τϡ� .Fn selectdevs �κƼ¹Ԥ� �ҥ�ȤǤ����ǥХ����ꥹ�Ȥ��Ѳ����Ƥ��뤫��Ǥ��� .Pp .Fn buildmatch �ϥ��顼�ξ��� -1 �����顼���ʤ����� 0 ���֤��ޤ��� .Pp .Fn compute_stats �ϥ��顼�ξ��� -1 �������ξ��� 0 ���֤��ޤ��� .Pp .Fn compute_etime ���Ѥߤηв���֤��֤��ޤ��� .Pp .Nm devstat �饤�֥��ؿ��� 1 �Ĥ��饨�顼���֤��줿��硢���̤ˡ����顼�� ��ͳ���������Х륹�ȥ�� .Va devstat_errbuf �˰�������ޤ��� .Va devstat_errbuf ��Ĺ���� .Dv DEVSTAT_ERRBUF_SIZE ����饯���Ǥ��� .Sh ��Ϣ���� .Xr systat 1 , .Xr iostat 8 , .Xr rpc.rstatd 8 , .Xr vmstat 8 , .Xr devstat 9 .Sh ��� .Nm devstat ���ץ����ƥ�Ϻǽ�� .Fx 3.0 �˸���ޤ����� .Sh ��� Kenneth Merry .Aq ken@FreeBSD.ORG .Sh �Х� .Fn getdevs , .Fn selectdevs ������� .Fn buildmatch �ˤ�äƳ�꿶��줿����� ��꿶�������뤿��Υ��ե������������餯����Ϥ��Ǥ��� .Pp .Fn selectdevs �ϡ��ǥХ���������������Ƥ��ʤ���硢 .Dq top �⡼�ɤǤϡ� .Va maxshowdevs �ǥХ������¿�������뤳�ȤϤ����餯�Ǥ��ޤ��� .Pp ���Υ饤�֥��ΤۤȤ�ɤΥ��饤����ȤˤĤ��ƹԤ������ץХåե�����å� ��¹Ԥ��뤿��δؿ��������餯����Ϥ��Ǥ��� .Pp .Va statinfo ��¤�� .Nm devinfo ��¤�ϡ�����åפ����⤦�����ͤ���ɬ�פ�����ޤ���