1847124 Members
5644 Online
110263 Solutions
New Discussion

Re: dynamic buffer cache

 
Charles McCary
Valued Contributor

dynamic buffer cache


Group,

Currently I have dbc_min_pct set to 5 and dbc_max_pct set to 50. During times of the day when memory usage is at it's peak, users are complaining of slow response. I realize that this is due to pageouts because the buffer is using 50%. I now realize that I need to reset this buffer to somewhere between 10-30%. However, it was my understanding that the dbc was supposed to give up memory resources at times of peak user and system memory usage. I do not see this occuring. In fact what I see occuring is that the dbc is remaining roughly 50% and user processes are being swapped out. So what's the deal - is the dbc supposed to give up these memory resources or not during peak usage?

THANKS!
12 REPLIES 12
A. Clay Stephenson
Acclaimed Contributor

Re: dynamic buffer cache

Check out this link (It is 10.10 but applies to 11x as well)
http://us-support.external.hp.com/cki/bin/doc.pl/sid=ac9cfee90752a165a3/screen=ckiDisplayDocument?docId=200000049436468

50% dbc_max_pct is way too high on servers. I find that about 15% does well and if you have the time or a sandbox I suggest that you
forget dynamic buffer cacheing and set bufpages.
On most servers and especially database servers
I think you will find that after about 400 MB (and this is generous) marginal improvements in buffer cache hit rates are very small.
If it ain't broke, I can fix that.
Charles McCary
Valued Contributor

Re: dynamic buffer cache

A. Clay,

thanks for the response, but I had already figured that part out. What I'm looking for is if anyone knows whether the dbc is supposed to give up resources on a busy system or not.

If it is supposed to give up these memory resources, then it really shouldn't matter what you have dbc_max_pct set to, because during busy times the dbc would be at far less than "max"? Make sense?
A. Clay Stephenson
Acclaimed Contributor

Re: dynamic buffer cache

Charles, I stepped on your toes didn't I?
A better answer to your question is that yes
dbc_mac_pct does limit buffer cache growth. If the systems is under pressure from process memory requirements, the kernel will shrink
buffer cache space down to a minimum value of dbc_min_pct. All of that is fine; the problem occurs when the system is under pressure from both process space and block I/O buffer cache requirements. The system tries to free buffer
cache pages to use for process space while at the same time trying to allocate pages for block I/O. A vicious thrashing cycle is thus in play. Stephen Ciullo goes into great detail
in one of his performance tuning talks.
If it ain't broke, I can fix that.
MANOJ SRIVASTAVA
Honored Contributor

Re: dynamic buffer cache

What is the total memory of the system ?

Manoj
Charles McCary
Valued Contributor

Re: dynamic buffer cache

Manoj,

2gb - thanks
MANOJ SRIVASTAVA
Honored Contributor

Re: dynamic buffer cache

This implies that the DATA buffer cache can go upto from 100mb to 1 GB . Typically Oracle recommends that this difference should not be more than 500mb . We have got the production server with 32 GB RAM and we have set the dbc_max to 3% and min to 2 %. Again the question is what is the upper limit , typically I have seen in system with about 2Gb the best bet is 30 as MAX and 5 as MIN , I think this would give you a lot of respite .

Manoj
Mladen Despic
Honored Contributor

Re: dynamic buffer cache

Charles,

I vaguely remember someone from HP stating that
dynamic buffer cache does not work so well when
it comes to actually reducing its size due to memory
pressures. Supposively it works, but it is so bad on
system performance that you may as well try to avoid
the situation by not setting dbc_max_pct too high
(50% is too high in your case). I do not have much
experience with this, but that's what I heard from HP.
Perhaps someone from HP could clarify this further.

Mladen
Charles McCary
Valued Contributor

Re: dynamic buffer cache

Guys,

thanks for the info. I currently have plans to drop the dbc_max_pct to 30% and see how that plays out.

If there is an "official" hp answer to my original question about memory pressures / I/O pressures and dbc, I'm still very interested to hear it.
CHRIS_ANORUO
Honored Contributor

Re: dynamic buffer cache

Hello,

For you to get effective dynamic buffer caching. Set NBUF and BUFPAGES to 0(zero). Also set swapmem_on=1 to give you 75% of Physical memory as pseudo memory.
I advice you set your dbc_max_pct to 12. Check with sysdef or run this command "echo bufpages/D |adb -k /stand/vmunix /dev/kmem" to get the actual max value of bufpages.
When We Seek To Discover The Best In Others, We Somehow Bring Out The Best In Ourselves.
Philip P. Hartl
Valued Contributor

Re: dynamic buffer cache

The recommendation from the HPUX Performance Tuning Class was that buf cache should not be larger than 300MB. This appears to be the point of diminishing returns and beyond this point can actually have decreasing benefit.
Don't take life so seriously; nobody gets out alive.
CHRIS_ANORUO
Honored Contributor

Re: dynamic buffer cache

Hello,

For you to get effective dynamic buffer caching. Set NBUF and BUFPAGES to 0(zero). Also set swapmem_on=1 to give you 75% of Physical memory as pseudo memory.
I advice you set your dbc_max_pct to 12. Check with sysdef or run this command "echo bufpages/D |adb -k /stand/vmunix /dev/kmem" to get the actual max value of bufpages. Also check your total swap space (swapinfo -tm)
When We Seek To Discover The Best In Others, We Somehow Bring Out The Best In Ourselves.
A. Clay Stephenson
Acclaimed Contributor

Re: dynamic buffer cache

Charles,
If you want the official HP position on this issue checkout 'HP-UX Kernel Tuning and Performance Guide' by Stephen Ciullo (Revised March 15,2000) from docs.hp.com. There the
reccommended setting for dbc_max_pct is 25% with bufpages set to 0 to allow for dynamic buffer cache. However, the best HP-UX performance tuner I know (who might also be the author of this paper) will tell you to ignore that dynamic buffer cache stuff and set
bufpages to no more than about 400MB (and that this is overkill in most cases.) One other point is that it is much easier to tune the remainder of the system when the buffer cache is held constant.
If it ain't broke, I can fix that.