The onstat -g command structure is completely new with IDS. There is no analogue in the OnLine system to these commands. Since Informix had used up most of the available alpha characters with OnLine, they decided to use onstat -g as a gateway into most of the additional features of IDS such as, parallelism, multithreading, parallel data query, and memory management. To do this, they added a third parameter to the onstat command. The generic term for the information presented with this command subfamily is "MT," for "multithreading."
To expedite reference to the onstat -g commands, here is a summary of the multithreading commands:
MT COMMANDS: onstat -g all Print all MT information ath Print all threads wai Print waiting threads act Print active threads rea Print ready threads sle Print all sleeping threads spi Print spin locks with long spins sch Print VP scheduler statistics lmx Print all locked mutexes wmx Print all mutexes with waiters con Print conditions with waiters stk <tid> Dump the stack of a specified thread glo Print MT global information mem [<pool name>|<session id>] Print pool statistics. seg Print memory segment statistics rbm Print block map for resident segment nbm Print block map for non-resident segments afr <pool name|session id> Print allocated pool fragments ffr <pool name|session id> Print free pool fragments ufr <pool name|session id> Print pool usage breakdown iov Print disk IO statistics by vp iof Print disk IO statistics by chunk/file iog Print AIO global information iob Print big buffer usage by IO VP class ppf [<partition number> | 0] Print partition profiles tpf [<tid> | 0] Print thread profiles ntu Print net user thread profile information ntt Print net user thread access times ntm Print net message information ntd Print net dispatch information nss [<session id>) Print net shared memory status nsc [<client id>] Print net shared memory status nsd Print net shared memory data sts Print max and current stack sizes dic Print dictionary cache information opn [<tid>] Print open tables qst Print queue statistics wst Print thread wait statistics ses [<session id>] Print session information sql [<session id>] Print SQL information stq [<session id>] Print stream queue information dri Print data replication information pos Print /INFORMIXDIR/etc/.infos.DBSERVERNAME file mgm Print Memory Grant Manager information lap Print light append information ddr Print DDR log post processing information dmp <address> <length> Dump <length> bytes of memory starting at <address> src <pattern> <mask> Search memory for <pattern>, <pattern>==(memory&<mask>)
Informix has not documented many of the onstat -g subcommands. The official line is that onstat -g is for "support and debugging purposes" only. Although this section has drawn information from multiple sources, in many instances what you are seeing is the "unofficial" definitions of terms and fields used in the commands. Some of the commands are so oblique that I didn't even include them in this chapter, since I'm convinced that nobody knows what they do. In many cases, the options have changed or been dropped from one version of IDS to the next. In view of the unsupported nature of much of this material, use caution in interpreting what these commands tell you. Luckily, you cannot do any harm simply by running the commands, so experiment away.
One of the useful sources of information about some of the meanings of the flags and fields has come from the sysmaster.sql command script that is used by the engine when it initializes the sysmaster database. If you ever want to do a little interesting, not-so-light reading, take a look at this SQL file. The fields are fairly well documented and understandable, although it has its share of cryptic definitions. Also of use is the flags_text table in the sysmaster database. This is useful in decoding the meanings of some of the more esoteric flags.
As part of the research for this book, I requested that Informix provide detail about these onstat -g options. Even with the assistance of Informix Press and insiders within the company, I could not pry the information loose from Informix. This is a totally unacceptable attitude and I hope that someone at Informix will see fit to document these utilities and to share this important monitoring and tuning information with the customers who have spent so much time and money acquiring and learning their products. Such arrogance and refusal to share information are not what users expect from an open systems company.
The onstat -g all command presents all of the multithreading information with one command. This is usually more information than you will ever need to know at one time. It may be useful if you are writing scripts to gather and then process the information with grep, sed, awk, perl, or other utilities.