28.06.2014 Views

Performance Tuning Siebel Software on the Sun Platform

Performance Tuning Siebel Software on the Sun Platform

Performance Tuning Siebel Software on the Sun Platform

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Descripti<strong>on</strong><br />

The reas<strong>on</strong> for this symptom was that some of <strong>the</strong> <str<strong>on</strong>g>Siebel</str<strong>on</strong>g> server processes servicing<br />

<strong>the</strong>se users had ei<strong>the</strong>r hung or crashed. Close observati<strong>on</strong> with repeated replays<br />

revealed that <strong>the</strong> Siebmtshmw process memory shot up from 700M to 2GB.<br />

The UltraSPARC IV-based E2900 server can handle up to 30,000 processes and about<br />

87,000 LWPs (threads), so <strong>the</strong>re was no resource limitati<strong>on</strong> from <strong>the</strong> machine here. The<br />

<str<strong>on</strong>g>Siebel</str<strong>on</strong>g> applicati<strong>on</strong>s are running into 32-bit process space limits -- but why is <strong>the</strong> memory<br />

per process going from 700Mbytes to 2GBytes? Fur<strong>the</strong>r debugging lead us to <strong>the</strong><br />

problem: <strong>the</strong> stack size.<br />

The total memory size of a process is made up of heap size + stack size + data<br />

and an<strong>on</strong> segments. In this case, it was found that <strong>the</strong> bloating in size was at <strong>the</strong> stack,<br />

which grew from 64Kbytes to 1Gbyte, which was abnormal. pmap is a utility <strong>on</strong> <strong>the</strong><br />

Solaris system that provides a detailed breakdown of memory sizes per process.<br />

Here is an output of pmap that shows that <strong>the</strong> stack segment bloated to about 1Gbyte:<br />

siebapp6@/export/pspp> grep stack pmap.4800mixed.prob.txt (pmap output unit is<br />

in Kbytes)<br />

FFBE8000 32 32 - 32 read/write/exec [ stack ]<br />

FFBE8000 32 32 - 32 read/write/exec [ stack ]<br />

FFBE8000 32 32 - 32 read/write/exec [ stack ]<br />

FFBE8000 32 32 - 32 read/write/exec [ stack ]<br />

FFBE8000 32 32 - 32 read/write/exec [ stack ]<br />

C012A000 1043224 1043224 - 1043224 read/write/exec [ stack ]<br />

We reduced <strong>the</strong> stack size to 128Kbytes and this fixed <strong>the</strong> problem. Now a single <str<strong>on</strong>g>Siebel</str<strong>on</strong>g><br />

server c<strong>on</strong>figured with 10,000 MaxTasks started up successfully. It was failing to startup<br />

before breaking at <strong>the</strong> mmap call. The stack size of 8Mytes is a default setting <strong>on</strong> <strong>the</strong><br />

Solaris system. However, limiting <strong>the</strong> stack size to 128Kbytes removed a lot of <strong>the</strong><br />

instability in our high load tests and we were able to run 5000 user tests without errors,<br />

pushing up to 80% to 90% CPU usage <strong>on</strong> <strong>the</strong> 12-way E2900 server.<br />

Changing <strong>the</strong> mainwin address MW_GMA_VADDR=0xc0000000 to o<strong>the</strong>r values did not<br />

seem to make a big difference. Please do not vary this parameter.<br />

Soluti<strong>on</strong><br />

Change <strong>the</strong> stack size hard limit of <strong>the</strong> <str<strong>on</strong>g>Siebel</str<strong>on</strong>g> process from unlimited to 512 bytes.<br />

Stack size <strong>on</strong> <strong>the</strong> Solaris OS has a hard limit and a soft limit. The default values for <strong>the</strong>se<br />

two limits are unlimited and 8Mbytes, respectively. This means that an applicati<strong>on</strong><br />

process <strong>on</strong> <strong>the</strong> Solaris OS can have its stack size anywhere up to <strong>the</strong> hard limit. Since<br />

<strong>the</strong> default hard limit <strong>on</strong> <strong>the</strong> Solaris system is unlimited <strong>the</strong> <str<strong>on</strong>g>Siebel</str<strong>on</strong>g> applicati<strong>on</strong><br />

processes could grow <strong>the</strong>ir stack size all <strong>the</strong> way up to 2Gbytes. When this occurs, <strong>the</strong><br />

total memory size of <strong>the</strong> <str<strong>on</strong>g>Siebel</str<strong>on</strong>g> process hits <strong>the</strong> max limit of memory addressable by a<br />

32-bit process and bad things happen (such as a hang or crash). Setting <strong>the</strong> limit for<br />

stack to 1Mbytes or a lower value resolved <strong>the</strong> issue.<br />

<str<strong>on</strong>g>Performance</str<strong>on</strong>g> <str<strong>on</strong>g>Tuning</str<strong>on</strong>g> <str<strong>on</strong>g>Siebel</str<strong>on</strong>g> <str<strong>on</strong>g>Software</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> <strong>Sun</strong> <strong>Platform</strong> Page 35

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!