blob: 98db3e88b646d0572499632f6782afece29b64f9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You 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.
*/
package org.apache.geode.management;
import java.beans.ConstructorProperties;
import java.io.Serializable;
/**
* Composite data type used to distribute metrics for the operating system hosting a member of the
* distributed system.
*
* @since GemFire 7.0
*
*/
public class OSMetrics implements Serializable {
/**
* Maximum number file descriptor which can be opened
*/
private long maxFileDescriptorCount;
/**
* Current number of open file descriptor count
*/
private long openFileDescriptorCount;
private long processCpuTime;
private long committedVirtualMemorySize;
private long totalPhysicalMemorySize;
private long freePhysicalMemorySize;
private long totalSwapSpaceSize;
private long freeSwapSpaceSize;
/**
* Returns the operating system name.
*/
private String name;
/**
* Returns the operating system version.
*/
private String version;
/**
* Returns the operating system architecture.
*/
private String arch;
/**
* Returns the number of processors available to the Java virtual machine. This method is
* equivalent to the {@link Runtime#availableProcessors()} method.
*/
private int availableProcessors;
/**
* * Returns the system load average for the last minute. The system load average is the sum of
* the number of runnable entities queued to the {@linkplain #getAvailableProcessors available
* processors} and the number of runnable entities running on the available processors averaged
* over a period of time. The way in which the load average is calculated is operating system
* specific but is typically a damped time-dependent average.
*/
private double systemLoadAverage;
/**
*
* This constructor is to be used by internal JMX framework only. User should not try to create an
* instance of this class.
*/
@ConstructorProperties({"maxFileDescriptorCount", "openFileDescriptorCount", "processCpuTime",
"committedVirtualMemorySize", "totalPhysicalMemorySize", "freePhysicalMemorySize",
"totalSwapSpaceSize", "freeSwapSpaceSize", "name", "version", "arch", "availableProcessors",
"systemLoadAverage"
})
public OSMetrics(long maxFileDescriptorCount, long openFileDescriptorCount, long processCpuTime,
long committedVirtualMemorySize, long totalPhysicalMemorySize, long freePhysicalMemorySize,
long totalSwapSpaceSize, long freeSwapSpaceSize, String name, String version, String arch,
int availableProcessors, double systemLoadAverage) {
this.maxFileDescriptorCount = maxFileDescriptorCount;
this.openFileDescriptorCount = openFileDescriptorCount;
this.processCpuTime = processCpuTime;
this.committedVirtualMemorySize = committedVirtualMemorySize;
this.totalPhysicalMemorySize = totalPhysicalMemorySize;
this.freePhysicalMemorySize = freePhysicalMemorySize;
this.totalSwapSpaceSize = totalSwapSpaceSize;
this.freeSwapSpaceSize = freeSwapSpaceSize;
this.name = name;
this.version = version;
this.arch = arch;
this.availableProcessors = availableProcessors;
this.systemLoadAverage = systemLoadAverage;
}
/**
* Returns the maximum number of open file descriptors allowed by the operating system.
*/
public long getMaxFileDescriptorCount() {
return maxFileDescriptorCount;
}
/**
* Returns the current number of open file descriptors..
*/
public long getOpenFileDescriptorCount() {
return openFileDescriptorCount;
}
/**
* Returns the amount of time (in nanoseconds) used by the member's process.
*/
public long getProcessCpuTime() {
return processCpuTime;
}
/**
* Returns the current number of megabytes of memory allocated.
*/
public long getCommittedVirtualMemorySize() {
return committedVirtualMemorySize;
}
/**
* Returns the number of megabytes of memory available to the operating system.
*/
public long getTotalPhysicalMemorySize() {
return totalPhysicalMemorySize;
}
/**
* Returns the number of megabytes of free memory available to the operating system.
*/
public long getFreePhysicalMemorySize() {
return freePhysicalMemorySize;
}
/**
* Returns the number of megabytes of swap space allocated.
*/
public long getTotalSwapSpaceSize() {
return totalSwapSpaceSize;
}
/**
* Returns the number of megabytes of free swap space.
*/
public long getFreeSwapSpaceSize() {
return freeSwapSpaceSize;
}
/**
* Returns the name of the operating system.
*/
public String getName() {
return name;
}
/**
* Returns the version of the operating system.
*/
public String getVersion() {
return version;
}
/**
* Returns the hardware architecture.
*/
public String getArch() {
return arch;
}
/**
* Returns the number of available processors.
*/
public int getAvailableProcessors() {
return availableProcessors;
}
/**
* Returns the system load average.
*/
public double getSystemLoadAverage() {
return systemLoadAverage;
}
/**
* String representation of OSMetrics
*/
@Override
public String toString() {
return "{OSMetrics : maxFileDescriptorCount = " + maxFileDescriptorCount
+ " openFileDescriptorCount = " + openFileDescriptorCount + " processCpuTime = "
+ processCpuTime + " committedVirtualMemorySize = " + committedVirtualMemorySize
+ " totalPhysicalMemorySize = " + totalPhysicalMemorySize + " freePhysicalMemorySize = "
+ freePhysicalMemorySize + " totalSwapSpaceSize = " + totalSwapSpaceSize
+ " freeSwapSpaceSize = " + freeSwapSpaceSize + " name = " + name + " version = " + version
+ " arch = " + arch + " availableProcessors = " + availableProcessors
+ " systemLoadAverage = " + systemLoadAverage + "}";
}
}