com.gemstone.gemfire.internal.LinuxProcessStats Maven / Gradle / Ivy
Show all versions of gemfire-core Show documentation
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.internal;
import com.gemstone.gemfire.*;
/**
* This class provides the interface for statistics about a
* Linux operating system process that is using a GemFire system.
*/
public class LinuxProcessStats
{
final static int imageSizeINT = 0;
final static int rssSizeINT = 1;
private final static StatisticsType myType;
private static void checkOffset(String name, int offset) {
int id = myType.nameToId(name);
Assert.assertTrue(offset == id, "Expected the offset for " + name + " to be " + offset + " but it was " + id);
}
static {
StatisticsTypeFactory f = StatisticsTypeFactoryImpl.singleton();
myType = f.createType("LinuxProcessStats",
"Statistics on a Linux process.",
new StatisticDescriptor[] {
f.createIntGauge("imageSize",
"The size of the process's image in megabytes.",
"megabytes"),
f.createIntGauge("rssSize",
"The size of the process's resident set size in megabytes. (assumes PAGESIZE=4096, specify -Dgemfire.statistics.linux.pageSize= to adjust)",
"megabytes"),
});
checkOffset("imageSize", imageSizeINT);
checkOffset("rssSize", rssSizeINT);
}
private LinuxProcessStats() {
// no instances allowed
}
public static StatisticsType getType() {
return myType;
}
/**
* Returns a ProcessStats
that wraps Linux process
* Statistics
.
*
* @since 3.5
*/
static ProcessStats createProcessStats(final Statistics stats) {
if (stats instanceof LocalStatisticsImpl) {
HostStatHelper.refresh((LocalStatisticsImpl) stats);
} // otherwise its a Dummy implementation so do nothing
return new ProcessStats(stats) {
@Override
public long getProcessSize() {
return stats.getInt(rssSizeINT);
}
};
}
}