ディスク入出力情報の詳細を探る
表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コマンドによる実行中プロセスのオープンファイル表示
ディスク入出力の性能が向上しない原因の一つに、ある種のエラーが発生していることが考えられます。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オプションの出力
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)カーネルトレースをご覧下さい。
接続されているバスの一覧表は、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.