ディスク入出力情報の詳細を探る


表1.ポイントと項目

No ポイント コマンドとオプション 内容
@ プロセスがオープンしているファイルは? pfiles PID オープンファイルのリストを表示
A ディスクのエラーは発生していないか? netstat -k 構成ディスクのエラーを確認
kstat [module]:[instance]:[name]:[statistic] カーネルスタティスティックを確認
/usr/platform/`uname -m`/sbin/prtdiag [ -v ] 構成チャネルのエラーを確認
B I/Oトレースの採取方法は? prex -k カーネルプローブにアタッチ
tnfxtract トレース情報の抜き出し
tnfdump トレース情報の編集
C バスのステータスはどうなっているのか? busstat -i バスの一覧表を表示
busstat -e sbus0 .... 特定バスのカウンタ名を表示
busstat -w sbus0, pic0=..... 特定バスカウンタの内容を表示


@プロセスがオープンしているファイルは?

実行中のプロセスがどのようなファイルをオープンしているのか、proc(1)のpfilesコマンドを使用するとわかります。図1にpfilesコマンドの出力を示します。

# pfiles 455 <CR>
455: ora_ckpt_ora900
Current rlimit: 1024 file descriptors
  0: S_IFCHR mode:0666 dev:118,0 ino:722773 uid:0 gid:3 rdev:13,2 O_RDONLY
  1: S_IFCHR mode:0666 dev:118,0 ino:722773 uid:0 gid:3 rdev:13,2 O_RDONLY
  2: S_IFCHR mode:0666 dev:118,0 ino:722773 uid:0 gid:3 rdev:13,2 O_RDONLY
  3: S_IFCHR mode:0666 dev:118,0 ino:722773 uid:0 gid:3 rdev:13,2 O_RDONLY
  4: S_IFCHR mode:0666 dev:118,0 ino:722773 uid:0 gid:3 rdev:13,2 O_RDONLY
  5: S_IFCHR mode:0666 dev:118,0 ino:722773 uid:0 gid:3 rdev:13,2 O_RDONLY
  6: S_IFREG mode:0664 dev:118,3 ino:2424620 uid:101 gid:17000 size:2307987 O_WRONLY|O_APPEND
  7: S_IFREG mode:0664 dev:118,3 ino:2424620 uid:101 gid:17000 size:2307987 O_WRONLY|O_APPEND
  8: S_IFDOOR mode:0444 dev:249,0 ino:53133 uid:0 gid:0 size:0 O_RDONLY|O_LARGEFILE FD_CLOEXEC door to nscd[246]
  9: S_IFREG mode:0644 dev:118,3 ino:3158550 uid:101 gid:17000 size:437760 O_RDONLY FD_CLOEXEC
 10: S_IFREG mode:0640 dev:118,3 ino:156602 uid:101 gid:17000 size:44898 O_RDWR|O_APPEND
 11: S_IFREG mode:0660 dev:118,3 ino:740143 uid:101 gid:17000 size:24 O_RDWR advisory read lock set by process 449
256: S_IFREG mode:0660 dev:118,3 ino:6683960 uid:101 gid:17000 size:1974272 O_RDWR|O_DSYNC|O_LARGEFILE FD_CLOEXEC
257: S_IFREG mode:0660 dev:118,3 ino:6683961 uid:101 gid:17000 size:1974272 O_RDWR|O_DSYNC|O_LARGEFILE FD_CLOEXEC
258: S_IFREG mode:0660 dev:118,3 ino:6683962 uid:101 gid:17000 size:1974272 O_RDWR|O_DSYNC|O_LARGEFILE FD_CLOEXEC
259: S_IFREG mode:0664 dev:118,3 ino:6683957 uid:101 gid:17000 size:340795392 O_RDWR|O_DSYNC|O_LARGEFILE FD_CLOEXEC
   advisory write lock set by process 451
#

図1.pfilesコマンドによる実行中プロセスのオープンファイル表示


Aディスクのエラーは発生していないか?

ディスク入出力の性能が向上しない原因の一つに、ある種のエラーが発生していることが考えられます。netstatコマンド-kオプションは、構成されているディスクの情報とともに、一部のエラーを表示することが出来ます。図2.1に例を示します。netstatコマンド-kオプションの表示は多くの行におよびますので、ファイルにリダイレクトして、viエディタで確認されると良いでしょう。

# netstat -k > netstat_k_info <CR>
# vi netstat_k_info <CR>
        :
sd0,err:
Soft Errors 0 Hard Errors 2 Transport Errors 0 Vendor MATSHITA
Product DVD-ROM SR-8177 Revision Revision NZ21 Serial No [ Size 18446744073709551615 Media Error 0 Device Not Ready 2
No Device 0 Recoverable 0 Illegal Request 0 Predictive Failure Analysis 0
        :
#

図2.1 netstatコマンド-kオプションのディスクエラー表示


kstatコマンドはSolaris 8から提供されたコマンドです。netstatコマンド-kオプションの表示とほぼ同等の出力jです。図2.2に例を示します。kstatコマンドをオプションj無しで実行すると多くの行が表示されますので、ファイルにリダイレクトして、viエディタで確認されると良いでしょう。

# kstat sderr:6:sd6,err <CR>
module: sderr instance: 6
name: sd6,err class: device_error
Device Not Ready 0
Hard Errors 0
Illegal Request 0
Media Error 0
No Device 0
Predictive Failure Analysis 0
Product DVD-ROM SD-M1401
Recoverable 0
Revision 1007
Serial No 06/22/00
Size 1.84467440737096e+19
Soft Errors 0
Transport Errors 0
Vendor TOSHIBA
crtime 87.2075264
snaptime 3053.9444368

#

図2.2 kstatコマンドのディスクエラー表示


prtdiagコマンドは各種のシステム管理ソフトウェアでも使用されているSolarisでおなじみのコマンドです。出力情報はディスクチャネルエラーをはじめとして、CPU、メモリ等、様々です。図2.3に出力例を示します。

# /usr/platform/`uname -m`/sbin/prtdiag -v <CR>
System Configuration: Sun Microsystems sun4u SUNW,Sun-Blade-1000 (UltraSPARC-III+)
System clock frequency: 150 MHZ
Memory size: 1GB

==================================== CPUs ====================================
E$ CPU CPU Temperature
CPU Freq Size Impl. Mask Die Ambient
--- -------- ---------- ------ ---- -------- --------
0 900 MHz 8MB US-III+ 2.2 70 C 30 C

================================= IO Devices =================================
Bus Freq
Brd Type MHz Slot Name Model
--- ---- ---- ---------- -------------------------------- ----------------------
0 pci 33 1 SUNW,m64B (display) SUNW,370-4362
0 pci 66 4 SUNW,qlc-pci1077,2200.5 (scsi-fc+
0 pci 33 5 ebus/parallel-ns87317-ecpp (para+
0 pci 33 5 ebus/serial-sab82532 (serial)
0 pci 33 5 network-pci108e,1101.1 (network) SUNW,pci-eri
0 pci 33 5 firewire-pci108e,1102.1001 (fire+
0 pci 33 6 scsi-pci1000,f.37 (scsi-2)
0 pci 33 6 scsi-pci1000,f.37 (scsi-2)

============================ Memory Configuration ============================
Segment Table:
-----------------------------------------------------------------------
Base Address Size Interleave Factor Contains
-----------------------------------------------------------------------
0x0 1GB 2 BankIDs 0,2

Bank Table:
-----------------------------------------------------------
Physical Location
ID ControllerID GroupID Size Interleave Way
-----------------------------------------------------------
0 0 0 512MB 0
2 0 0 512MB 1

Memory Module Groups:
--------------------------------------------------
ControllerID GroupID Labels
--------------------------------------------------
0 0 J0100,J0202,J0304,J0406

=============================== usb Devices ===============================

Name Port#
------------ -----
keyboard 3
mouse 4

============================ Environmental Status ============================
Fan Speeds:
----------------------------
Fan Device Speed
----------------------------
system 44%
cpu 19%
power-supply 100%

================================ HW Revisions ================================
ASIC Revisions:
---------------
pci: Rev 5
pci: Rev 5
ebus: Rev 1

System PROM revisions:
----------------------
OBP 4.5.10 2002/02/11 10:38
#

図2.3 prtdiagコマンド-vオプションの出力


BI/Oトレースの採取方法は?

prexコマンドでディスクj入出力のIOトレースを採取することが出来ます。図3.1に例を示します。図3.2はtnfdumpコマンドの出力例です。特定のプロセスに関する入出力は、prexコマンドのプロセスフィルタリング機能によってトレース範囲を絞ります。prexの解説は、prex(1)カーネルトレースをご覧下さい。

# prex -k <CR>
Type "help" for help ...
prex> buffer alloc 4m <CR>
Buffer of size 4194304 bytes allocated
prex> enable io <CR>
prex> trace io <CR>
prex> ktrace on <CR>

      :

prex> ktrace off <CR>
prex> quit <CR>
# tnfxtract io.trc <CR>
# tnfdump io.trc > io.dump <CR>
# prex -k <CR>
Type "help" for help ...
prex> buffer dealloc <CR>
buffer deallocated
prex> quit <CR>
#

図3.1 IOトレースを採取し編集する

# cat io.dump
probe tnf_name: "strategy" tnf_string: "keys io blockio;file ../../common/os/driver.c;line 529;"
probe tnf_name: "pageout" tnf_string: "keys vm pageio io;file ../../common/vm/vm_pvn.c;line 553;"
probe tnf_name: "biodone" tnf_string: "keys io blockio;file ../../common/os/bio.c;line 1201;"
---------- ---------------- ----- ----- ---------- --- ------------------------- ------------------------
Elapsed (ms) Delta (ms) PID LWPID TID CPU Probe Name Data / Description . . .
---------- ---------------- ----- ----- ---------- --- ------------------------- ------------------------
   0.000000   0.000000 455   7 0x300  0 strategy device: 3 block: 113096080 size: 8192 buf: 0x30000084628 flags: 524569
   0.194600   0.194600 455   8 0x300  0 strategy device: 3 block: 113096272 size: 8192 buf: 0x30001eaf190 flags: 524569
   0.328800   0.134200 455   9 0x300  0 strategy device: 3 block: 113096464 size: 8192 buf: 0x30001eaeef0 flags: 524569
  10.664000  10.335200    0   0 0x2a0  0 biodone device: 3 block: 113096080 buf: 0x30000084628
  10.667200   0.003200   0   0 0x2a0  0 biodone device: 3 block: 113096080 buf: 0x30000084628
  10.705200   0.038000  455   7 0x300  0 pageout vnode: 0x300024d6f88 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
  12.982000   2.276800   0   0 0x2a0  0 biodone device: 3 block: 113096272 buf: 0x30001eaf190
  12.983400   0.001400   0   0 0x2a0  0 biodone device: 3 block: 113096272 buf: 0x30001eaf190
  12.998200   0.014800  455   8 0x300  0 pageout vnode: 0x300024d6db0 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
  15.358200   2.360000   0   0 0x2a0  0 biodone device: 3 block: 113096464 buf: 0x30001eaeef0
  15.359400   0.001200   0   0 0x2a0  0 biodone device: 3 block: 113096464 buf: 0x30001eaeef0
  15.373200   0.013800  455   9 0x300  0 pageout vnode: 0x300024d6bd8 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
3089.562200 3074.189000  455  10 0x300  0 strategy device: 3 block: 113096080 size: 8192 buf: 0x30001eaeef0 flags: 524569
3089.726000   0.163800  455   7 0x300  0 strategy device: 3 block: 113096272 size: 8192 buf: 0x30001eaf190 flags: 524569
3089.843000   0.117000  455   8 0x300  0 strategy device: 3 block: 113096464 size: 8192 buf: 0x30000084628 flags: 524569
3100.237600  10.394600    0   0 0x2a0  0 biodone device: 3 block: 113096080 buf: 0x30001eaeef0
3100.239800   0.002200   0   0 0x2a0  0 biodone device: 3 block: 113096080 buf: 0x30001eaeef0
3100.266800   0.027000  455  10 0x300  0 pageout vnode: 0x300024d6f88 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
3102.576600   2.309800   0   0 0x2a0  0 biodone device: 3 block: 113096272 buf: 0x30001eaf190
3102.577800   0.001200   0   0 0x2a0  0 biodone device: 3 block: 113096272 buf: 0x30001eaf190
3102.592600   0.014800  455   7 0x300  0 pageout vnode: 0x300024d6db0 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
3104.934000   2.341400   0   0 0x2a0  0 biodone device: 3 block: 113096464 buf: 0x30000084628
3104.935200   0.001200   0   0 0x2a0  0 biodone device: 3 block: 113096464 buf: 0x30000084628
3104.948800   0.013600  455   8 0x300  0 pageout vnode: 0x300024d6bd8 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
6179.438600 3074.489800  455   9 0x300  0 strategy device: 3 block: 113096080 size: 8192 buf: 0x30000084628 flags: 524569
6179.579400   0.140800  455  10 0x300  0 strategy device: 3 block: 113096272 size: 8192 buf: 0x30001eaf190 flags: 524569
6179.695000   0.115600  455   7 0x300  0 strategy device: 3 block: 113096464 size: 8192 buf: 0x30001eaeef0 flags: 524569
6189.808200  10.113200    0   0 0x2a0  0 biodone device: 3 block: 113096080 buf: 0x30000084628
6189.815600   0.007400   0   0 0x2a0  0 biodone device: 3 block: 113096080 buf: 0x30000084628
6192.150800   2.335200   0   0 0x2a0  0 biodone device: 3 block: 113096272 buf: 0x30001eaf190
6192.152000   0.001200   0   0 0x2a0  0 biodone device: 3 block: 113096272 buf: 0x30001eaf190
6192.176200   0.024200  455  10 0x300  0 pageout vnode: 0x300024d6db0 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
6192.241400   0.065200  455   9 0x300  0 pageout vnode: 0x300024d6f88 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
6194.509800   2.268400   0   0 0x2a0  0 biodone device: 3 block: 113096464 buf: 0x30001eaeef0
6194.511000   0.001200   0   0 0x2a0  0 biodone device: 3 block: 113096464 buf: 0x30001eaeef0
6194.525800   0.014800  455   7 0x300  0 pageout vnode: 0x300024d6bd8 pages_pageout: 0 pages_freed: 0 pages_reclaimed: 0
7989.637400 1795.111600    3   1 0x300  0 strategy device: 0 block: 11404128 size: 8192 buf: 0x300014d9f00 flags: 4195337
7989.748000   0.110600   3   1 0x300  0 strategy device: 0 block: 11608592 size: 8192 buf: 0x300014da8a0 flags: 4195337
7989.773200   0.025200   3   1 0x300  0 strategy device: 0 block: 11608496 size: 8192 buf: 0x30001371320 flags: 4195337
7989.792600   0.019400   3   1 0x300  0 strategy device: 0 block: 11608576 size: 8192 buf: 0x300013714e0 flags: 4195337
7989.814200   0.021600   3   1 0x300  0 strategy device: 0 block: 11608528 size: 8192 buf: 0x3000178d7a0 flags: 4195337
7989.837200   0.023000   3   1 0x300  0 strategy device: 3 block: 113065392 size: 8192 buf: 0x30001fbd6a0 flags: 4195337
7999.270000   9.432800   0   0 0x2a0  0 biodone device: 0 block: 11404128 buf: 0x300014d9f00
8010.413200  11.143200    0   0 0x2a0  0 biodone device: 3 block: 113065392 buf: 0x30001fbd6a0
8021.881400  11.468200    0   0 0x2a0  0 biodone device: 0 block: 11608496 buf: 0x30001371320
8028.108400   6.227000   0   0 0x2a0  0 biodone device: 0 block: 11608528 buf: 0x3000178d7a0
8034.470800   6.362400   0   0 0x2a0  0 biodone device: 0 block: 11608576 buf: 0x300013714e0
8040.571200   6.100400   0   0 0x2a0  0 biodone device: 0 block: 11608592 buf: 0x300014da8a0
#

図3.2 tnfdumpコマンドの編集出力

表3に項目の内容を示します。

表3.tnfdumpの出力項目

項目 内容
Elapsed(ms) ミリ秒(ms)単位の最初のプローブからの経過時間。
Delta(ms) ミリ秒(ms)単位の処理時間。
PID プロセスID
LWPID LWPのID
TID トレースID
CPU 実行CPU
Probe Name プローブ名
Data 各プローブに対応したデータ。
Description 詳細な情報【備考】

【備考】プローブによって内容が異なります。prex(1)カーネルトレースをご覧下さい。


Cバスのステータスはどうなっているのか?

接続されているバスの一覧表は、busstatコマンド-lオプションで表示します。図4.1に例を示します。

# busstat -l <CR>
Busstat Device(s):
saf0 pcis0 pcis1
#

図4.1 busstatコマンド-lオプションによるバス一覧の表示


busstatコマンド-lオプションで表示されたバス名を、busstatコマンド-eオプションによって表示するとPIC(Performance Instrument Counter)が表示されます。図4.2に例を示します。

# busstat -e pcis0 <CR>
pic0
dvma_stream_rd
dvma_stream_wr
dvma_const_rd
dvma_const_wr
dvma_stream_buf_mis
dvma_cycles
dvma_wd_xfr
pio_cycles
dvma_tlb_misses
interrupts
saf_inter_nack
pio_reads
pio_writes
dvma_rd_buf_timeout
dvma_rd_rtry_stc
dvma_wr_rtry_stc
dvma_rd_rtry_nonstc
dvma_wr_rtry_nonstc
E*_slow_transitions
E*_slow_cycles_per_64

pic1
dvma_stream_rd
dvma_stream_wr
dvma_const_rd
dvma_const_wr
dvma_stream_buf_mis
dvma_cycles
dvma_wd_xfr
pio_cycles
dvma_tlb_misses
interrupts
saf_inter_nack
pio_reads
pio_writes
dvma_rd_buf_timeout
dvma_rd_rtry_stc
dvma_wr_rtry_stc
dvma_rd_rtry_nonstc
dvma_wr_rtry_nonstc
E*_slow_transitions
E*_slow_cycles_per_64

#

図4.2 busstatコマンド-eオプションによるPICリストの表示


該当するPICを、busstatコマンド-wオプションによって表示します。図4.3に例を示します。

# busstat -w pcis0,pic0=dvma_const_rd,pic0=dvma_const_wr
time dev  event0       pic0    event1       pic1
1   pcis0 dvma_const_rd  6406   dvma_stream_rd  0
2   pcis0 dvma_const_wr  1021   dvma_stream_rd  0
3   pcis0 dvma_const_rd  6378   dvma_stream_rd  0
4   pcis0 dvma_const_wr  1015   dvma_stream_rd  0
5   pcis0 dvma_const_rd  8104   dvma_stream_rd  0
6   pcis0 dvma_const_wr  733    dvma_stream_rd  0
7   pcis0 dvma_const_rd  6380   dvma_stream_rd  5
8   pcis0 dvma_const_wr  1002   dvma_stream_rd  0
9   pcis0 dvma_const_rd  6377   dvma_stream_rd  0
10  pcis0 dvma_const_wr  1002   dvma_stream_rd  0
11  pcis0 dvma_const_rd  6377   dvma_stream_rd  0
12  pcis0 dvma_const_wr  1003   dvma_stream_rd  0
13  pcis0 dvma_const_rd  6570   dvma_stream_rd  0
14  pcis0 dvma_const_wr  978    dvma_stream_rd  0
15  pcis0 dvma_const_rd  6819   dvma_stream_rd  0
16  pcis0 dvma_const_wr  933    dvma_stream_rd  0
17  pcis0 dvma_const_rd  6373   dvma_stream_rd  0
18  pcis0 dvma_const_wr  1032   dvma_stream_rd  0
19  pcis0 dvma_const_rd  6189   dvma_stream_rd  0
20  pcis0 dvma_const_wr  1009   dvma_stream_rd  0
21  pcis0 dvma_const_rd  6376   dvma_stream_rd  0
22  pcis0 dvma_const_wr  1004   dvma_stream_rd  0
23  pcis0 dvma_const_rd  6373   dvma_stream_rd  0
24  pcis0 dvma_const_wr  1002   dvma_stream_rd  0
25  pcis0 dvma_const_rd  6382   dvma_stream_rd  0
26  pcis0 dvma_const_wr  1009   dvma_stream_rd  0
27  pcis0 dvma_const_rd  6374   dvma_stream_rd  0
^C#

図4.3 busstatコマンド-wオプションによるPICの表示

busstatで表示されるイベント詳細は、UltraSPARC III Cu User's Manual( http://www.sun.com/processors/manuals/USIIIv2.pdf…CPUアーキテクチャによってマニュアル名称、およびURLアドレスが異なります)をご覧ください。また、参考文献2にすっきりとまとまった表がありますので、ご覧ください。

 

Copyright (C) 2004 by The Art of Computer Technologies, Corp.  All rights reserved.