Hi All, I have read a lot about setting the maxpgio parameter on Solaris 8 and how it can "magically" improve the performance of the system. I would like to see if setting maxpgio on a server will help out, but I do not know how to check the existing value of this parameter. When I use adb it shows the foll - maxpgio/D maxpgio: maxpgio: 0 Before I go around playing with this parameter how do I find out what the existing setting is but do not know how to check it. Any ideas on how to do so ? Time permitting - following is the problem on the server I have an Oracle server on a Netra t1 low end server (its not a production box so could not allocate a high end server for it) with 1CPU/1GB RAM and 2x36GB disks on it. I have created a RAID 0 stripe for the slice holding the database using Disksuite. Currently the system is extremely slow (uptime shows load of 8, vmstat shows around 7-10 in the run queue, and the faults col under vmstat show number over 110k, iostat asvc_t shows around 20+ numbers etc) Any help is highly appreciated !
"Max Paging IO" is a throttle on the number of I/O 's you can make each second to the SWAP areas. Historically this was set at a fraction of the I/O throughtput available I beleive the value was set to 40 on a standard system. The only reason to increase MAXPGIO is if you have set up a number of addidtional SWAP areas on additional disk drives. If you system already is IO-Bound, increasing the number of transfers to the swap area is not a good idea. Check the load on your disk's "iostat -x" or "sar -d" if diskload is less than 30% i guess you could experiment with MAXPGIO. If diskload is more than 50% increasing MAXPGIO without adding more diskdrives will only make the system slower still.
You're using the wrong display option. maxpgio on 64 bit Solaris is a 64 bit quantity, so you need to use /E instead of /D How can I tell? Firstly because of my vast experience which tells me that a value of zero for maxpgio is just plain silly ;-) Secondly, and perhaps a little more usefully, I've looked at the size of the variable: $ /usr/ccs/bin/nm /dev/ksyms |grep maxpgio  | 21283984| 8|OBJT |GLOB |0 |ABS |maxpgio The '8' in the third column is the size of the object in bytes - 8 bytes, 64 bits, which means you use "E", not "D" (using "D" you just see the value in the topmost bits of the variable). So: # mdb -k Loading modules: [ unix krtld genunix sd ufs_log ip usba nca sppp nfs random ptm ipc logindmux cpc ]
maxpgio: maxpgio: 40 To see values in hex you'd use J instead of X for the same reason. If you're writing a 64 bit value (NOT something I'd recommend on a running kernel) use Z instead of W Note however that you can't just assume that everything's a 64 bit quantity; some variables are still 32 bits long on a 64 bit kernel. For instance # /usr/ccs/bin/nm /dev/ksyms|grep semmns  | 2013479920| 4|OBJT |GLOB |0 |ABS |seminfo_semmns A size of 4 bytes in column 3 shows that this is a 32 bit quantity. # mdb -k Loading modules: [ unix krtld genunix sd ufs_log ip usba nca sppp nfs random ptm ipc logindmux cpc ]
seminfo_semmns: seminfo_semmns: 257698037790 Obvious twaddle.
seminfo_semmns: seminfo_semmns: 60 That's better. This will be documented as Infodoc 44604.