hoping you could help me share your ideas to my current problem.
I've been noticing an increment value on "disk i/o structure" every time i run
sp_monitorconfig 'all' and decided to adjust configuration higher based on max_used output of sp_monitorconfig for disk i/o.
The question is would there be a way to fix that value of max_used for disk i/o structure inorder to avoid resizing from time to time the disk i/o structure using sp_configure "disk i/o structure".
IMHO, I would keep tuning "disk i/o structures" manually from time to time, instead of trying to self-tune it. Too high a value, in a dataserver doing lots of I/O, could be inefficient. For this reason I would prefer being aware of how large are the increases of "disk i/o structures"
In version 12.5 I noticed that a high number of outstanding I/Os --that is, async I/Os requested to the OS and still waiting for them-- drove to somewhat high values of CPU busy on I/O. ASE was consuming more CPU on checking pending I/O than in the rest of her activity. Under such a stressed situation, query response times begun to degradate. IIRC, even queries not supposed to depend on physical I/O worsened. Should we have artificially reduced the outstanding I/Os by imposing a low config value for "disk i/o structures" ? I don't know, perhaps that would have been counterproductive, but it shows that too large a value of "disk i/o structures" could harm.
We have never been in such an I/O constrained situation that the OS had rejected some I/O, but in theory this may happen. In this case, the advice is clear: decrease "disk i/o structures" before your OS or disks become overcommited.
In 12.5 and I think also in 15, "max async i/os per server" is a static config parm. ASE will suspend new async I/O if either the limit in "max async i/os per server" or "disk i/o structures" is reached. The admin manual states that is slighty more efficient for ASE to wait on the "disk i/o structures" limit than on "max async i/os per server", and consequently recommends setting both parms equal. Well, let's say "max async i/os per server" higher or equal than "disk i/o structures". My point is that, since both parms should be tuned simultaneously and one of them is static, you cannot tune both automatically and dynamically.
An out of topic remark about I/O: since high I/O activity has severe performance penalties (this happens in every RDBMS, but ASE 12.5 is, IMHO, specially sensitive to high I/O) the sensible DBA should request, buy, borrow, implore or steal as much physical memory as ASE needs in order to abate I/O when too high.
How high is high? As usually, it depends. sp_sysmon "Max Outstanding I/Os" above 300 per server will hurt in any system. On many, even 200 may be harming. Or even 100. sp_sysmon "Total Requested Disk I/Os" or "Total Completed I/Os" are, in my opinion, less useful as a rule of the thumb because advanced disk systems may allow higher values than slower disks. But they are good for comparing trends on the same dataserver.