Informix Dynamic Serverの稼働状況などを詳しく分析する時など、定期的 (数時間おき)に onstat -a を実行して、出力を後でまとめて調べることがあります。LOCKの数が大きいシステムだと、ロック情報部分 ( onstat -k での出力に相当) だけで数百万行を超えてしまい、この部分だけで、出力の大半 ( 90%以上 ) を占めていたりします。
これくらい大きなファイルだと、一般のテキストエディタでは読み込めないかも知れません。例えば、秀丸は1000万行まで、emacs (32bit版 ) だと、大体256MBが上限です。
数値化・グラフ化が必要な場合にはsedとかで切り出したりもしますが、内容をブラウズしてみたい、という時、私はLESS ( または、その各プラットフォームへの移植版 ) を使っています。
キーアサインは、VI と似ているので、私には使いやすいです。
ctrl-g 現在位置(ファイル上の行番号やバイト単位の位置)を表示
g ファイルの先頭に戻る
z 1ページ進む
b 1ページ戻る
/ 検索
n 検索の繰り返し
q LESSを終了する
ロック情報部分は非常に大きくなっている場合があるので、読み飛ばしたい場合もあるかと思います。ファイル中のロック情報の先頭にジャンプするには、
行の先頭が "Locks"で始まる行
を検索しましょう。LESS の場合、
/^Locks
と入力し、エンターキーを押します。
また、ロック情報の次に続く項目はバッファプールの情報なので、
行の先頭が "Buffers"で始まる行
を検索すると、ロック情報をスキップできます。LESSの場合だと、
/^Buffers
ですね。
更に、Spin locks with waitsのセクションも長いことが多いので、
/^Spin locks with waits
でセクションの先頭に飛び、その次のセクション
/^Locked mutexes
まで読み飛ばしちゃいましょう。
ところで、onstat -a って、どんな情報が含まれているのでしょう?また、それぞれの情報を探し出すにはどうすればよいのでしょう?最近大きなonstat -a 出力を読む機会が何度となく続いたので、手元の Informix を使って中身を調べてみました。以下、IDS 10.00.FC7 での onstat -a 実行結果から、主要なセクションの先頭見出しを抜き出したものです。また、これらのセクションと同等の内容を表示する個別の onstat オプションを、分かる限り調べてみました。
^Message Log File:
( onstat -m )
^Configuration File:
( onstat -c )
^Userthreads
( onstat -u )
^Transactions
( onstat -x )
^Latches with lock or userthread set
( osntat -s )
^Locks
( onstat -k )
^Buffers
( onstat -b )
buffer LRU queue pairs
( osntat -R )
^Tblspaces
( onstat -T )
^Dbspaces
( onstat -d )
^Global Transaction Identifiers
( onstat -G )
^Physical Logging
( onstat -l )
^Distribution of available locks on the lock free lists
^Profile
( onstat -p )
^Optical StageBlob Cache
^MT global info:
( onstat -g glo )
^Virtual processor summary:
^Read/Write Mutexes:
( onstat -g rwm )
^Threads:
( onstat -g ath )
^Spin locks with waits:
( onstat -g spi )
^Locked mutexes:
( onstat -g lmx )
^Number of mutexes on VP free lists:
^Mutexes with waiters:
( onstat -g wmx )
^Number of mutexes on VP free lists:
^Conditions with waiters:
( onstat -g con )
^Pool Summary:
( onstat -g mem )
^Block bitmap for resiedent segment address
( onstat -g rbm )
^Block bitmap for virtual segment address
( onstat -g nbm )
^Dictionary Cache:
( onstat -g cac )
^Distribution Cache:
^UDR Cache
^Extended Type Name Cache:
^Cast Cache:
^Opclass Instance Cache:
^Access Method Cache:
^Statement Cache Summary:
( onstat -g ssc )
^User-defined Aggregate Cache:
^External Directive Cache:
^VP Scheduler Statistics:
( onstat -g sch )
^Thread Migration Statistics:
^Current VP total allocations from cache:
( onstat -g vpcache )
^AIO global info:
( onstat -g iog )
^AIO I/O queues:
( onstat -g ioq )
^AIO I/O vps:
( ontat -g iov )
^AIO global files:
( onstat -g iof )
^AIO big buffer usage summary:
( onstat -g iob )
^global network information:
( onstat -g ntu )
^Individual thread network information (basic):
^Individual thread network information (times):
^Network mailbox information:
( onstat -g ntm )
^IO statistics for each MaxConnect instance:
^Stack usage:
( ontat -g sts )
^session .*#RSAM
( onstat -g ses )
^Data Replication:
( onstat -g dri )
^Partition profiles
( onstat -g ppf )
^Thread profiles
( onstat -g tpf )
^Generic Page Thread profiles
^Generic Page Partition profiles
^Memory Grant Manager (MGM)
( onstat -g mgm )
^Server start-up environment:
( osntat -g env ? )
^Light Scan Info
( onstat -g lsc )
^Light Append Info
( onstat -g lap )
^There are
( onstat -g dis )
^num .*DBSpace
^Tblspace
( onstat -T )
^Dbspaces - Archive Status
^Datablades:
( onstat -g dll )
^Buffers (Access)
^Btree Cleaner Info
( onstat -C)
onstat -a の出力が何百メガバイトもあるようなシステムの解析作業をしている人にはひょっとしたら役に立つかも。お役に立てば幸いです。
先に書いたとおり、これは IDS 10.00.FC7で調べた内容です。最新版の IDS 11.50については...もごもご....