blob: b26774f5623d730f4158fe45a168bed537c08581 [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.ignite.internal.managers.discovery;
import java.io.Serializable;
/**
* This class represents runtime information available for current VM.
*/
public interface GridLocalMetrics extends Serializable {
/**
* Returns the number of processors available to the Java virtual machine.
* This method is equivalent to the {@link Runtime#availableProcessors()}
* method.
* <p> This value may change during a particular invocation of
* the virtual machine.
*
* @return The number of processors available to the virtual
* machine; never smaller than one.
*/
public int getAvailableProcessors();
/**
* 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.
* <p>
* If the load average is not available, a negative value is returned.
* <p>
* This method is designed to provide a hint about the system load
* and may be queried frequently. The load average may be unavailable on
* some platform where it is expensive to implement this method.
*
* @return The system load average; or a negative value if not available.
*/
public double getCurrentCpuLoad();
/**
* Returns amount of time spent in GC since the last update.
* <p>
* The return value is a percentage of time.
*
* @return Amount of time, spent in GC since the last update.
*/
public double getCurrentGcCpuLoad();
/**
* Returns the amount of heap memory in bytes that the Java virtual machine
* initially requests from the operating system for memory management.
* This method returns {@code -1} if the initial memory size is undefined.
* <p>
* This value represents a setting of the heap memory for Java VM and is
* not a sum of all initial heap values for all memory pools.
*
* @return The initial size of memory in bytes; {@code -1} if undefined.
*/
public long getHeapMemoryInitialized();
/**
* Returns the current heap size that is used for object allocation.
* The heap consists of one or more memory pools. This value is
* the sum of {@code used} heap memory values of all heap memory pools.
* <p>
* The amount of used memory in the returned is the amount of memory
* occupied by both live objects and garbage objects that have not
* been collected, if any.
*
* @return Amount of heap memory used.
*/
public long getHeapMemoryUsed();
/**
* Returns the amount of heap memory in bytes that is committed for
* the Java virtual machine to use. This amount of memory is
* guaranteed for the Java virtual machine to use.
* The heap consists of one or more memory pools. This value is
* the sum of {@code committed} heap memory values of all heap memory pools.
*
* @return The amount of committed memory in bytes.
*/
public long getHeapMemoryCommitted();
/**
* Returns the maximum amount of heap memory in bytes that can be
* used for memory management. This method returns {@code -1}
* if the maximum memory size is undefined.
* <p>
* This amount of memory is not guaranteed to be available
* for memory management if it is greater than the amount of
* committed memory. The Java virtual machine may fail to allocate
* memory even if the amount of used memory does not exceed this
* maximum size.
* <p>
* This value represents a setting of the heap memory for Java VM and is
* not a sum of all initial heap values for all memory pools.
*
* @return The maximum amount of memory in bytes; {@code -1} if undefined.
*/
public long getHeapMemoryMaximum();
/**
* Returns the amount of non-heap memory in bytes that the Java virtual machine
* initially requests from the operating system for memory management.
* This method returns {@code -1} if the initial memory size is undefined.
* <p>
* This value represents a setting of non-heap memory for Java VM and is
* not a sum of all initial heap values for all memory pools.
*
* @return The initial size of memory in bytes; {@code -1} if undefined.
*/
public long getNonHeapMemoryInitialized();
/**
* Returns the current non-heap memory size that is used by Java VM.
* The non-heap memory consists of one or more memory pools. This value is
* the sum of {@code used} non-heap memory values of all non-heap memory pools.
*
* @return Amount of none-heap memory used.
*/
public long getNonHeapMemoryUsed();
/**
* Returns the maximum amount of non-heap memory in bytes that can be
* used for memory management. This method returns {@code -1}
* if the maximum memory size is undefined.
* <p>
* This amount of memory is not guaranteed to be available
* for memory management if it is greater than the amount of
* committed memory. The Java virtual machine may fail to allocate
* memory even if the amount of used memory does not exceed this
* maximum size.
* <p>
* This value represents a setting of the non-heap memory for Java VM and is
* not a sum of all initial non-heap values for all memory pools.
*
* @return The maximum amount of memory in bytes; {@code -1} if undefined.
*/
public long getNonHeapMemoryMaximum();
/**
* Returns the uptime of the Java virtual machine in milliseconds.
*
* @return Uptime of the Java virtual machine in milliseconds.
*/
public long getUptime();
/**
* Returns the start time of the Java virtual machine in milliseconds.
* This method returns the approximate time when the Java virtual
* machine started.
*
* @return Start time of the Java virtual machine in milliseconds.
*/
public long getStartTime();
/**
* Returns the current number of live threads including both
* daemon and non-daemon threads.
*
* @return the current number of live threads.
*/
public int getThreadCount();
/**
* Returns the peak live thread count since the Java virtual machine
* started or peak was reset.
*
* @return The peak live thread count.
*/
public int getPeakThreadCount();
/**
* Returns the total number of threads created and also started
* since the Java virtual machine started.
*
* @return The total number of threads started.
*/
public long getTotalStartedThreadCount();
/**
* Returns the current number of live daemon threads.
*
* @return The current number of live daemon threads.
*/
public int getDaemonThreadCount();
}