from this output, I would only recommend to add 20 GB memory and your paging will stop. From your stats you are using close to 100% memory computational - no wonder that your box is paging - and yes this will for sure be DB content as well ... and if your DBAs are doing rman backups on top it becomes real bad.
What you could try is mount your oracle filesystems with noatime option and switch oracle to setall - this will give you more free memory into your free list and may reduce your memory footprint.
i found in one IBM book, that memory needs are virtual + pers + clnt from svmon output.
so the deficit was 19496715 + 5 + 6447378 - 20971520 = 4972578 * 4Kb = 19890312 Kb = 19Gb
are these calculations correct?
i don't understand yet what is "virtual" represent in svmon. the value 19496715 is greater than paging space and lower than real memory. can you explain this?
i can show you some visual graphs captured by nmon for the last 3 days. we are interested in the time from 8 to 17 o'clock
this from last Tuesday when system was paging much
this is from Wednesday, the system paged out only until 12, and right after that the percentage of computational processes memory increased to 80%
this is from Thursday, when the system almos did not page from 08 till 17 and as you see all this time computational memory was on the level of 75%-80%
it seems to me that system is comfortable when computational memory consumes 80% of the total memory, which is 80Gb. 20% is used by the system, so application needs are 60% of 80Gb which is 48Gb.
I have a few hundred oracle boxes - in my experience the systems are most comfortable when comp (the avm value in vmstat x 4k) doesnt exceed 80% as this leaves enough memory for all the oracle forked processes, IO buffering, batch processing and so on.
When my memory utilization exceeds these 80% than my system starts scanning / freeing memory which utilizes cpu and slows down the DB as the system waits for sufficient freed up memory to continue processing - which obviously is bad. The higher the scan to free ratio - so the more pages need to be scanned to free up the memory I actually need for the given workload - the slower the system gets and the more cpu is utilized. So I make sure I always have plenty of memory - as particularly for oracle the need of non-comp memory is very valid as its usually a filesystem based DB - and not finding filecache if needed slows down the DB too as no IO can happen ...
Please note - during rman backups you still will see some scan and free as this puts - at least in my environments - a large amount of additional load onto the systems. So my 80% are during busy times but not when rman runs. Nmon is pretty helpful to find out what is good for your system and when you do have your busy times.
Virtual memory btw is physical memory + pagingspace in 4k pages. Virtual memory in use is how much of this you are actively using - ideally visibly less than you physically have
# vmstat -v
20971520 memory pages
20286310 lruable pages
10525 free pages
4 memory pools
4631080 pinned pages
80.0 maxpin percentage
5.0 minperm percentage
95.0 maxperm percentage 31.3 numperm percentage 6357498 file pages
0.0 compressed percentage
0 compressed pages 31.3 numclient percentage
95.0 maxclient percentage 6357493 client pages
0 remote pageouts scheduled
1167074 pending disk I/Os blocked with no pbuf
600159 paging space I/Os blocked with no psbuf
2484 filesystem I/Os blocked with no fsbuf
443 client filesystem I/Os blocked with no fsbuf
249209795 external pager filesystem I/Os blocked with no fsbuf
Isn't this almost 25GB FS data in physical memory while having >20GB in the paging?
Reducing (forcing down) FS caching would be one way to go in my opinion, why an Oracle box needs to cache 25GB FS data?
oh many reasons:
- because oracle is a filesystem + process based DB
- because each oracle forked process needs memory - I assume this server has thousands of processes
- because every batch / backup / DB load requires lots of file caching on top of what is in the SGA - each IO will use 1 page (4 k) of memory
On thing that can run paging up unnecessarily is static linking of apps, something you can change for apps developed locally. All apps using libs dynamically linked are using the same pages, not copies, and since those pages are more frequently referenced, they stay in RAM.
We used to get a lot of RDBMS out of a small platform by designing batch processes to process N records at a time and then commit. We also found that over-use of updatable cursors increased processing. The way Oracle works, a long select can end up owning many pages as other processes update or delete those rows. So, it helps the whole system to do things in small batches, and even in select programs, a commit may release pages tied up by update-capable cursors. If you think of it, even processing 128 records per commit, you have 99+% of any economy of scale over one at a time. Any locks are released sooner, so interactive can get access. As batches get smaller, working set pages are in RAM or CPU cache more often, and finished pages can roll out and not soon return. Smaller batches also are more likely not to overwhelm cachng and buffering in disk subsystems, slowing I/O to media speed. Also, the system tuning does not change on more active days, just the batch run time.
Interactive row sets tend to be small, but batch can bring a lot of pages, an unpredicatable number, into play at once.
These 2 Users Gave Thanks to DGPickett For This Post:
I don't have direct access to Oracle DB and don't know what it's doing. DB is managed by our client.
At this moment system is not paging out, but there are some issues anyway. I see many waits in the queue and some blocked I/O operations.
See below.
and the number of "external pager filesystem I/Os blocked with no fsbuf" is growing every minute with 20-30 blocked operations.
i'm going to increase the value of j2_dynamicBufferPreallocation, which is equal to 16 now.
Can you suggest, how to determine what should i set for j2_dynamicBufferPreallocation ?
Hi,
I am new to linux. I am using more command to view the contents of a file. If the file has many pages i am using f to move forward to the next page.
But when i press f it skips to two pages instead of one page. i checked the man more.
It shows the default is 1. Please share your... (1 Reply)
Dear colleagues,
One of my friend have a problem with c code. While compiling a c program it displays a message like
"array type has incomplete element type". Any body can provide a solution for it.
Jaganadh.G (1 Reply)
okay.. have monitored that the page out/h max and avg have been 0 for one week. is this possible...? huge applications will have swap space being utilised ... so i am suprised that for one whole week, it has actually been zero
please advise
thanks (1 Reply)
Hi,
I've written now a man pages, but I don't knwo how to get 'man' to view them. Where have I to put this files, which directories are allowed??
THX Bensky (3 Replies)
Hello ,
I just installed openssh in my system . I actually tried to man sshd but it says no entry , though there is a man directory in the installation which have the man pages for sshd .
Can anyone tell me how should i install these man pages .
DP (2 Replies)