Re: Please vote for a new Informix RFE:
Posted in 2016
Topics: High Availability & Replication, Performance & Tuning, Logging & Checkpoints, Clustering, Grid & MACH11, Versions, Editions & End-of-Life, Jobs, Consulting & Announcements
Fernando:
I disagree. I do not think that group commits are the right 'fix' for
having all three logical log buffers dirty at the same time. You say that
delaying the log buffer flush until more data is in them would not delay
transactions, but that is exactly what it will do. Yes the delay will
likely be small, but it will be significant on a busy site. Indeed it would
just be formalizing the current problem which is transactions that have to
wait for the oldest dirty buffer to finish flushing. Same delay. I don't
think that the Paddy Power's of the world could or would take advantage of
group commits.
I agree that the buffers are not the problem and that more of them is not
the best solution. Faster flushes is. But we are stuck having to support
systems that are configured by "storage experts" and storage vendors who
have no clue about the IO requirements of databases. We have to live with
what we are given. Increasing the number of log buffers will go a long way
to do that.
This will introduce some slight added data risk but far less than buffered
logging. But, as you say, the volume of data in each log buffer is normally
small due to the frequent commits, so the risk is small.
Art
Art S. Kagel, President and Principal Consultant
ASK Database Management
www.askdbmgt.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 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 Fri, Jul 29, 2016 at 5:24 AM, Fernando Nunes <domusonline@gmail.com>
wrote:
> Art,
>
> I understand the rational behind this request, but I don't think that is
> the best way to solve it.
> First, we need to distinguish between the logical log buffers (3) and the
> hdr logical log buffers (12).
> There are situations where we could use "more" of them. For standard
> servers the HDR buffers are not an issue. If you see "G" flags in onstat -u
> you'll know that we're not flushing the buffers quick enough and it may be
> the reason behind this request. On HDR clusters there were situations where
> due to network constraints or lack of resources on the secondary the 12
> buffers are not enough (in the past there was even a patch provided for a
> specific customer if I recall correctly).
> Increasing or auto-configuring the HDR buffers would be a good idea.
>
> However, for the "normal" log buffers (3 of them) increasing them is like
> hiding the real problem. The problem with log buffers is that we don't
> really use them in real/heavy OLTP systems. As I explained in a recent
> thread due to the fact that most customers use non-buffered logging we're
> constantly flushing the buffers because we do it on every session COMMIT.
>
> What should be done and is already implemented in other RDBMS like DB2 and
> Oracle (SQL server seems to lag behind as they recently introduced what we
> have) is what is called "GROUP COMMIT".
> Basically we don't flush immediately (to allow the buffer to fill up a
> little more at least) but we only return on the COMMIT once the info is
> actually flushed to disk.
> If done properly the applications will not notice any significant delay,
> and instead of doing constant flushes that include around one page of
> logical log buffer we do less flushes and that allows for the normal
> rotation of the three buffers.
>
> Last time I don't think I posted this, so, from a real customer:
>
>
> IBM Informix Dynamic Server Version 11.50.FC7XH -- On-Line (Prim) -- Up
> 365 days 13:22:06 -- 18026336 Kbytes>
> Physical Logging
> Buffer bufused bufsize numpages numwrits pages/io
> P-1 82 128 10621588 85983 123.53
> phybegin physize phypos phyused %used
> 2:53 1975000 1939119 7499 0.38
>
> Logical Logging
> Buffer bufused bufsize numrecs numpages numwrits recs/pages
> pages/io
> L-1 0 128 175401685 11939562 6501187 14.7 1.8
> Subsystem numrecs Log Space used
> OLDRSAM 175401555 16032723948
> HA 130 5720
>
> As you can see we have 256KB of logical log buffer. But on average we
> write to disk only 1.8 pages.
> This is caused by the fact they use unbuffered logging (like virtually all
> the customers) and because they have a relatively large number of sessions
> (should vary between 1000 and 3000). So the rate of COMMITS is very high.
>
> Of course we coudl increase the number of log buffers... but that's not
> how this problem was solved in other technologies and there are probably
> good reasons for that.
>
> Finally, there is also an RFE to implement GROUP COMMITS:
>
>
> https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=45166
>
> Feel free to vote ;)
>
> On Thu, Jul 28, 2016 at 7:31 PM, Art Kagel <art.kagel@gmail.com> wrote:
>
>> Folks:
>>
>> I have entered a new RFE # 92334. It requests that IBM make the number of
>> logical log buffers configurable, dynamically adjustable, and include an
>> AUTO_ autonomic tuning capability for this resource:
>>
>>
>> https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=92334
>>
>> Please vote for this if you think it might be useful to you.
>>
>> Art
>>
>> Art S. Kagel, President and Principal Consultant
>> ASK Database Management
>> www.askdbmgt.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 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.
>>
>>
>> _______________________________________________
>> Informix-list mailing list
>> Informix-list@iiug.org
>> http://members.iiug.org/mailman/listinfo/informix-list
>>
>>
>
>
> --
> Fernando Nunes
> Portugal
>
> http://informix-technology.blogspot.com
> My email works... but I don't check it frequently...
>
--001a113c6c765dbe8c0538c4d0be
As I wrote, I disagree, so we'll agree on disagreeing. R&D will decide.
Currently on a really busy system we have many threads waiting on a flush
(in a worse case scenario). Some of these threads are not doing COMMITS.
They just need a buffer to write to.
Overall group commit will benefit, because only threads doing COMMIT would
wait. It's impossible to tell, but I doubt (it would depend on the
implementation) that these waits would be worse than the constant wait we
may have today.
Having more buffers would in practice turn to a system where no buffer
would be needed... Just a mutex/latch on the log buffer file descriptor and
each thread would acquire it. Because the flush has to be done
sequentially, so it would be similar in the end.
As for what we have today... We can setup each session for buffered... this
increases the risk, but an application can decide and less critical
activities could be done in buffered while the default is unbuffered.
I'm not a sotrage expert but having the logical log buffers in a filesystem
with a very small block size could help.... not sure
Regards
On Fri, Jul 29, 2016 at 12:47 PM, Art Kagel <art.kagel@gmail.com> wrote:
> Fernando:
>
> I disagree. I do not think that group commits are the right 'fix' for
> having all three logical log buffers dirty at the same time. You say that
> delaying the log buffer flush until more data is in them would not delay
> transactions, but that is exactly what it will do. Yes the delay will
> likely be small, but it will be significant on a busy site. Indeed it would
> just be formalizing the current problem which is transactions that have to
> wait for the oldest dirty buffer to finish flushing. Same delay. I don't
> think that the Paddy Power's of the world could or would take advantage of
> group commits.
>
> I agree that the buffers are not the problem and that more of them is not
> the best solution. Faster flushes is. But we are stuck having to support
> systems that are configured by "storage experts" and storage vendors who
> have no clue about the IO requirements of databases. We have to live with
> what we are given. Increasing the number of log buffers will go a long way
> to do that.
>
> This will introduce some slight added data risk but far less than buffered
> logging. But, as you say, the volume of data in each log buffer is normally
> small due to the frequent commits, so the risk is small.
>
> Art
>
> Art S. Kagel, President and Principal Consultant
> ASK Database Management
> www.askdbmgt.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 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 Fri, Jul 29, 2016 at 5:24 AM, Fernando Nunes <domusonline@gmail.com>
> wrote:
>
> > Art,
> >
> > I understand the rational behind this request, but I don't think that is
> > the best way to solve it.
> > First, we need to distinguish between the logical log buffers (3) and the
> > hdr logical log buffers (12).
> > There are situations where we could use "more" of them. For standard
> > servers the HDR buffers are not an issue. If you see "G" flags in onstat
> -u
> > you'll know that we're not flushing the buffers quick enough and it may
> be
> > the reason behind this request. On HDR clusters there were situations
> where
> > due to network constraints or lack of resources on the secondary the 12
> > buffers are not enough (in the past there was even a patch provided for a
> > specific customer if I recall correctly).
> > Increasing or auto-configuring the HDR buffers would be a good idea.
> >
> > However, for the "normal" log buffers (3 of them) increasing them is like
> > hiding the real problem. The problem with log buffers is that we don't
> > really use them in real/heavy OLTP systems. As I explained in a recent
> > thread due to the fact that most customers use non-buffered logging we're
> > constantly flushing the buffers because we do it on every session COMMIT.
> >
> > What should be done and is already implemented in other RDBMS like DB2
> and
> > Oracle (SQL server seems to lag behind as they recently introduced what
> we
> > have) is what is called "GROUP COMMIT".
> > Basically we don't flush immediately (to allow the buffer to fill up a
> > little more at least) but we only return on the COMMIT once the info is
> > actually flushed to disk.
> > If done properly the applications will not notice any significant delay,
> > and instead of doing constant flushes that include around one page of
> > logical log buffer we do less flushes and that allows for the normal
> > rotation of the three buffers.
> >
> > Last time I don't think I posted this, so, from a real customer:
> >
> >
> > IBM Informix Dynamic Server Version 11.50.FC7XH -- On-Line (Prim) -- Up
> > 365 days 13:22:06 -- 18026336 Kbytes> >
> > Physical Logging
> > Buffer bufused bufsize numpages numwrits pages/io
> > P-1 82 128 10621588 85983 123.53
> > phybegin physize phypos phyused %used
> > 2:53 1975000 1939119 7499 0.38
> >
> > Logical Logging
> > Buffer bufused bufsize numrecs numpages numwrits recs/pages
> > pages/io
> > L-1 0 128 175401685 11939562 6501187 14.7 1.8
> > Subsystem numrecs Log Space used
> > OLDRSAM 175401555 16032723948
> > HA 130 5720
> >
> > As you can see we have 256KB of logical log buffer. But on average we
> > write to disk only 1.8 pages.
> > This is caused by the fact they use unbuffered logging (like virtually
> all
> > the customers) and because they have a relatively large number of
> sessions
> > (should vary between 1000 and 3000). So the rate of COMMITS is very high.
> >
> > Of course we coudl increase the number of log buffers... but that's not
> > how this problem was solved in other technologies and there are probably
> > good reasons for that.
> >
> > Finally, there is also an RFE to implement GROUP COMMITS:
> >
> >
> >
> https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=45166
> >
> > Feel free to vote ;)
> >
> > On Thu, Jul 28, 2016 at 7:31 PM, Art Kagel <art.kagel@gmail.com> wrote:
> >
> >> Folks:
> >>
> >> I have entered a new RFE # 92334. It requests that IBM make the number
> of
> >> logical log buffers configurable, dynamically adjustable, and include an
> >> AUTO_ autonomic tuning capability for this resource:
> >>
> >>
> >>
> https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=92334
> >>
> >> Please vote for this if you think it might be useful to you.
> >>
> >> Art
> >>
> >> Art S. Kagel, President and Principal Consultant
> >> ASK Database Management
> >> www.askdbmgt.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 the IIUG, nor