Problems of I/O due to too many cleaners?
Posted in 2013
Topics: Storage & Space Management, Platform-Specific Issues
Hi, I have an instance informix 11.50 on a Unix server running HP-UX. It consists of 10 disks (LUNs) of 60 GB each. These Luns are of a SAN. At the operating system level, these disks are configured as raw devices and LVM (raw lvols linked with chunks). I've noticed that when there is high activity in the instance, the number of dirty buffers (seen with onstat-R) is high. This should be normal. But when this happens, I see that all threads CLEANERS (flush_sub) are in IO_Wait state and they remain in that state for several seconds. Currently, I have configured 120 CLEANERS for instance. My question is whether this amount is too high and could cause I/O congestion. What would be the amount of CLEANERS recommended? Thanks in advance, Roger
The general recommendation for CLEANERS has been the greater of the number
of LRUs (to support fast LRU cleaning under high update load) and the
number of chunks (to support parallel flushing of all chunks during a
checkpoint). If you have your caches' lru_min_dirty and lru_max_dirty set
high enough that more than 50% of your writes are chunk writes (see the
onstat -F output) then you can lean towards the number of chunks of that isactually lower than the number of LRUs.
Art
Art S. Kagel
Advanced DataTools (www.advancedatatools.com)
Blog: http://informix-myview.blogspot.com/
Disclaimer: Please keep in mind that my own opinions are my own opinions
and do not reflect on my employer, Advanced DataTools, the IIUG, nor any
other organization with which I am associated either explicitly,
implicitly, or by inference. Neither do those opinions reflect those of
other individuals affiliated with any entity with which I am affiliated nor
those of the entities themselves.
On Sat, Apr 13, 2013 at 9:50 AM, ROGER VILCA <rvilca@luzdelsur.com.pe>wrote:
> Hi,
> I have an instance informix 11.50 on a Unix server running HP-UX.
> It consists of 10 disks (LUNs) of 60 GB each. These Luns are of a SAN.
> At the operating system level, these disks are configured as raw devices
> and
> LVM (raw lvols linked with chunks).
> I've noticed that when there is high activity in the instance, the number
> of
> dirty buffers (seen with onstat-R) is high. This should be normal. But when
> this happens, I see that all threads CLEANERS (flush_sub) are in IO_Wait
> state
> and they remain in that state for several seconds.
> Currently, I have configured 120 CLEANERS for instance.
> My question is whether this amount is too high and could cause I/O
> congestion.
> What would be the amount of CLEANERS recommended?
>
> Thanks in advance,
> Roger
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--089e01161a94654e8204da48216d
onstat -F shows:Fg Writes LRU Writes Chunk Writes
0 37898980 47060501
These are the configuration:
cleaners=120
LRUs=510
lru_min_dirty=2
lru_max_dirty=4
CKPTINTVL=300
300 chunks
buffer size = 2k
chunk size = 2k
In this case if I want to increase more buffers I should further reduce the
min and max dirty?.
What advices could you give me based on the values ​​shown?
Thanks in advance.
You didn't state your version and platform which is always a good idea. My
advice will be different if you are NOTE running 11.10 or later In 11,
with non-blocking checkpoints and with a reasonable level of transaction
activity, you want at least 2/3 of the writes to be chunk writes. In
earlier releases, and in a very high transactin rate environment, you want
the opposite with 2/3 of the writing being done by LRU Writes. So adjust
the lru_min/max_dirty settings appropriately. Yes, if you are adding more
buffers then you MAY want to reduce those settings just to keep pace and
keep checkpoint times low, especially before v11.10.
So, the rule of thumb would indicate that you need to INCREASE CLEANERS
rather than decrease, but, since it's pretty high already, you can fudge by
just taking into account those chunks that are actively written to (so see
onstat -D) and the number of concurrently flushing LRU queues (see onstat-R during peak loads and after adjusting the lru_min/max_dirty settings)
when calculating the required number of CLEANERS.
Long term I would look to rebuild the instance at some point with fewer
larger chunks. Don't go wild the other way and build your dbspaces from a
single 2TB chunk though, you want to balance maintenance ease and server IO
scheduling efficiency with maximum IO parallelism. Tough line to walk, but
carefully watching your chunks will give you clues.
Art
Art S. Kagel
Advanced DataTools (www.advancedatatools.com)
Blog: http://informix-myview.blogspot.com/
Disclaimer: Please keep in mind that my own opinions are my own opinions
and do not reflect on my employer, Advanced DataTools, the IIUG, nor any
other organization with which I am associated either explicitly,
implicitly, or by inference. Neither do those opinions reflect those of
other individuals affiliated with any entity with which I am affiliated nor
those of the entities themselves.
On Sun, Apr 14, 2013 at 10:05 AM, ROGER VILCA <rvilca@luzdelsur.com.pe>wrote:
> onstat -F shows:> Fg Writes LRU Writes Chunk Writes
> 0 37898980 47060501
>
> These are the configuration:
>
> cleaners=120
> LRUs=510
> lru_min_dirty=2
> lru_max_dirty=4
> CKPTINTVL=300
>
> 300 chunks
> buffer size = 2k
> chunk size = 2k
>
> In this case if I want to increase more buffers I should further reduce the
> min and max dirty?.
>
> What advices could you give me based on the values ​​shown?
>
> Thanks in advance.
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--089e01161a94fe2a8f04da5319f4