Welcome to the new Gigaspaces XAP forum. To recover your account, please follow these instructions.

Ask Your Question
0

mpstat error

We seem to be seeing these errors in the log, and I'm not sure what to make of it.

WARNING [org.jini.rio.qos.measurable.cpu]: ExecHandler thread Caused by: java.io.IOException: Cannot run program "mpstat": error=12, Not enough space

Any ideas or suggestions?

Larry

{quote}This thread was imported from the previous forum. For your reference, the original is [available here|http://forum.openspaces.org/thread.jspa?threadID=2491]{quote}

asked 2008-07-28 11:42:08 -0500

larrychu gravatar image

updated 2013-08-08 09:52:00 -0500

jaissefsfex gravatar image
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
0

Seems as a resource leak when monitoring the machine free disk/CPU.
Have the following within your :\gigaspaces-xap\config\services\services.config to change the default timer interval to be called less frequently:

com.gigaspaces.management.system.disk {
    /* Report every 600 seconds with a sample size of 2, which means a result
     * will be produced every 1200 seconds */
    reportRate = 600000;
    sampleSize = 2;
    // Default Disk utilization high threshold watermark is 99%
    thresholdValues = new org.jini.rio.core.ThresholdValues(0.0, 0.99);
    enabled = false;
}

The "enabled = false" supported only with 6.5.

com.gigaspaces.management.system.cpu {
    /* Report every 3000 seconds with a sample size of 2, which means a result
     * will be produced every 6000 seconds */
    reportRate = 3000000;
    sampleSize = 2;
    // Default CPU utilization high threshold watermark is 99%
    thresholdValues = new org.jini.rio.core.ThresholdValues(0.0, 0.99);
}

com.gigaspaces.management.system.memory {
    /* Report every 1500 seconds with a sample size of 2, which means a result
     * will be produced every 3000 seconds */
    reportRate = 1500000;
    sampleSize = 2;
    // Default Memory utilization high threshold watermark is 99%
    thresholdValues = new org.jini.rio.core.ThresholdValues(0.0, 0.99);
}

The above are needed mostly when using the GSC SLA properties.

Make sure your ulimit set correctly.

Shay

answered 2008-07-28 11:50:29 -0500

shay hassidim gravatar image
edit flag offensive delete link more

Comments

This seems to help a lot. Do these settings affect the GSM or the GSC? In other words, does the GSC schedule the resource sampling or does the GSM ping the GSCs to do the sampling?

Edited by: Larry Chu on Jul 30, 2008 4:00 PM

larrychu gravatar imagelarrychu ( 2008-07-30 15:53:30 -0500 )edit

GSC.

Shay

shay hassidim gravatar imageshay hassidim ( 2008-07-30 16:00:23 -0500 )edit
0

This is a known issue with Solaris or really a "feature". The Solaris 10 virtual memory manager reserves swap when a process is forked, which is different from Linux and other OSs where requested virtual memory may exceed swap + real memory. Solaris does not allow reserving more swap than is available thus the aforementioned error may occur when available swap is less than the virtual memory footprint of the process being forked. This is what we have been experiencing.

See here for more information http://developers.sun.com/solaris/art...

Best Regards, Larry

answered 2008-08-04 15:53:42 -0500

larrychu gravatar image
edit flag offensive delete link more

Comments

Forgot to mention that the solution is to simply allocate more swap.

larrychu gravatar imagelarrychu ( 2008-08-04 15:55:04 -0500 )edit

You should have enough RAM on your machine to avoid swapping which can impact the space performance very much. Make sure that the Xmx size match the amount of memory your machine have. Shay

shay hassidim gravatar imageshay hassidim ( 2008-08-06 01:31:10 -0500 )edit

I'll try to explain better. There is a temporary condition that arises when System.exec is called from a java process. In order to run an application, the OS must fork the process temporarily to create a new process then replace the forked process with the application that should run. This creates a temporary condition where a new process is created that will match the amount of virtual memory allocated to the original java process. If the original java process is large, then the forked process will also be large. In solaris, when there isn't enough swap available to reserve for the fork, the fork will fail. In our case, we had a large number of 2 GB java processes and had reserved most of the available swap since we had only allocated 8GB of swap.

In conclusion, you need to have at least 1 java process' virtual memory footprint worth of available swap in addition to all the other memory you provision for.

larrychu gravatar imagelarrychu ( 2008-08-06 13:49:58 -0500 )edit

Thanks. I'm learning new things every day...

Shay

shay hassidim gravatar imageshay hassidim ( 2008-08-07 06:51:00 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2008-07-28 11:42:08 -0500

Seen: 898 times

Last updated: Aug 04 '08