Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

GCS_SERVER_PROCESSES how to measure?

577546May 14 2007 — edited Oct 26 2009
Hi

We are having 2 node RAC environment and a Physical standby database. Well when we process a huge batch. I am seeing this note in OEM, saying "inter node data transfer is poor in one of the other node". and suggesting this parameter "GCS_SERVER_PROCESSES" to set a high velue(by default this is value set 2 when RAC when cluster database set to TRUE.)

I google alot and also in Metalink. I am not getting how to measure to increase this value 2 to N ( max 20).

We are running on 11 cpu Hp Unix box? Cpu count same on both the servers.

Any inputs helps alot...

Regards,
Krish

Comments

OraGus
Krish,

How many LMS process are currently running on each instance? What type of interconnect are you using? How does you GC transfer times look?

I found that increasing this value may help in some instances, you'll just need to measure you cache transfer times to see if increasing the value helps. Also since you are on HP-UX you may want to set hpux_sched_noage and put the LMSx processes into real time priority .
577546
Thanks for replying to my thread. I was on lease yesterday so I could not able to respond you

How many LMS process are currently running on each instance?
Currently we are running 2 LMS processes. since by default gcs_server_processes set to 2. In the parameter description, it is saying we can increase to 20. But there are no thumb rules to increase the parameters!!

What type of interconnect are you using?
We are using UDP. I hope answer correctly.

How does your GC transfer times look?
Node1:
___________________________________________________________________
SQL> select value, name from v$sysstat
2 where name like 'gc%';

VALUE NAME
---------- ----------------------------------------------------------------
437904039 gcs messages sent
1490620 gc cr blocks served
6613 gc cr block build time
513592 gc cr block flush time
15007 gc cr block send time
10840926 gc current blocks served
161269 gc current block pin time
642222 gc current block flush time
110076 gc current block send time
1439030 gc cr blocks received
1352437 gc cr block receive time

VALUE NAME
---------- ----------------------------------------------------------------
13741758 gc current blocks received
3793665 gc current block receive time
11429 gc blocks lost
0 gc claim blocks lost
0 gc blocks corrupt
7146185 gc CPU used by this session

___________________________________________________________________


Node2
___________________________________________________________________

1 select value, name from v$sysstat
2* where name like 'gc%'
SQL> /

VALUE NAME
---------- ----------------------------------------------------------------
383453892 gcs messages sent
1375161 gc cr blocks served
8185 gc cr block build time
1122741 gc cr block flush time
13182 gc cr block send time
13531652 gc current blocks served
234992 gc current block pin time
1123240 gc current block flush time
129460 gc current block send time
1289594 gc cr blocks received
690492 gc cr block receive time

VALUE NAME
---------- ----------------------------------------------------------------
10583469 gc current blocks received
2682891 gc current block receive time
9806 gc blocks lost
0 gc claim blocks lost
0 gc blocks corrupt
5565872 gc CPU used by this session
___________________________________________________________________

Thank you once again.
OraGus
Krish,

I've never seen a real "Rule of Thumb" for setting the number of LMS processes. I have seen some general recommendations such as "Fewer busier LMS" processes may be better than a large number and no more than 10.

Like any other tuning exercise start with a baseline and then adjust and monitor.

I would probably start with setting hpux_sched_noage and using /usr/bin/rtprio 127 -PID to put the LMSx processes into realtime.

After that increase the # of LMS processed to 4 and then monitor.

Check your AWR reports for average gc send and receive times.
577546
Let me implement and see.

I appreciate your valuable suggestions. Will let you know results.

Thank you.

Regards,
Krish
Murali Vallath
You may want to ensure that LMS is running at high priority.. if I remember it runs by default at high priority starting with 10.2.0.3..but you may want to check.

LMS does a lot of work, too many is also pretty bad because it consumes CPU spins which could effect other process. There are two parts of the tuning that I look at when anlayising LMS activity.. 1. the prepare time of the LMS process where the LMS trys to find the block, grant the required privileges etc which depends on the o/s cpu scheduling delays number of latches available etc etc. and 2) the transfer time which depends on the interconnect traffic and the buffer settings.

Message was edited by:
Murali Vallath
577546
Murali,

Thanks for the ways to find out. can you describe little bit more on Step1 and Step2. If possible.

I find out, how to measure GCS_SERVER_PROCESSES? that is for every 4 CPU we need to increase 1 for this parameter. example if there are 12 CPU then gcs_server_processes should be 3.

-Kris
yelnemr
dear all

how to ensure that LMS is running at high priority
harryhou
Hi! I was wondering, when you discovered that you should increase the gcs_server_processes by 1 for every 4 cpus : is that per node or per cluster for the cpu count? Also, what if you add more than 1 for every 4; i.e. I have 3 on a 8 cpu node, 2 on the other nodes which are also 8 cpu?
1 - 8
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Nov 23 2009
Added on May 14 2007
8 comments
11,285 views