下面列出了java.lang.management.PlatformManagedObject#java.lang.management.BufferPoolMXBean 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public Object next() {
if (!beforeFirst) {
throw new IllegalStateException();
}
beforeFirst = false;
final MemoryInfo memoryInfo = new MemoryInfo();
final DrillbitEndpoint endpoint = context.getEndpoint();
memoryInfo.hostname = endpoint.getAddress();
memoryInfo.user_port = endpoint.getUserPort();
final MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
memoryInfo.heap_current = heapMemoryUsage.getUsed();
memoryInfo.heap_max = heapMemoryUsage.getMax();
BufferPoolMXBean directBean = getDirectBean();
memoryInfo.jvm_direct_current = directBean.getMemoryUsed();
// We need the memory used by the root allocator for the Drillbit
memoryInfo.direct_current = context.getRootAllocator().getAllocatedMemory();
memoryInfo.direct_max = DrillConfig.getMaxDirectMemory();
return memoryInfo;
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
@Override
public MBeanGroupMetricFamilyCollector merge(final MBeanGroupMetricFamilyCollector rawOther) {
if (!(rawOther instanceof BufferPoolMXBeanMetricFamilyCollector)) {
throw new IllegalStateException();
}
final BufferPoolMXBeanMetricFamilyCollector other = (BufferPoolMXBeanMetricFamilyCollector) rawOther;
final Map<Labels, BufferPoolMXBean> labeledBufferPoolMXBeans = new HashMap<>(this.labeledBufferPoolMXBeans);
for (final Map.Entry<Labels, BufferPoolMXBean> entry : other.labeledBufferPoolMXBeans.entrySet()) {
labeledBufferPoolMXBeans.merge(entry.getKey(), entry.getValue(), (o1, o2) -> {
throw new IllegalStateException(String.format("Object %s and %s cannot be merged, yet their labels are the same.", o1, o2));
});
}
return new BufferPoolMXBeanMetricFamilyCollector(labeledBufferPoolMXBeans);
}
@Override
public Stream<MetricFamily> collect() {
final Stream.Builder<NumericMetric> estimatedBuffersMetrics = Stream.builder();
final Stream.Builder<NumericMetric> totalCapacityBytesMetrics = Stream.builder();
final Stream.Builder<NumericMetric> usedBytesMetrics = Stream.builder();
for (final Map.Entry<Labels, BufferPoolMXBean> entry : labeledBufferPoolMXBeans.entrySet()) {
final Labels labels = entry.getKey();
final BufferPoolMXBean bufferPoolMXBean = entry.getValue();
estimatedBuffersMetrics.add(new NumericMetric(labels, bufferPoolMXBean.getCount()));
totalCapacityBytesMetrics.add(new NumericMetric(labels, bufferPoolMXBean.getTotalCapacity()));
usedBytesMetrics.add(new NumericMetric(labels, neg1ToNaN(bufferPoolMXBean.getMemoryUsed())));
}
return Stream.of(
new GaugeMetricFamily("cassandra_jvm_nio_buffer_pool_estimated_buffers", "Estimated current number of buffers in the pool.", estimatedBuffersMetrics.build()),
new GaugeMetricFamily("cassandra_jvm_nio_buffer_pool_estimated_capacity_bytes_total", "Estimated total capacity of the buffers in the pool.", totalCapacityBytesMetrics.build()),
new GaugeMetricFamily("cassandra_jvm_nio_buffer_pool_estimated_used_bytes", "Estimated memory usage by the JVM for the pool.", usedBytesMetrics.build())
);
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
public JmxBufferPoolManager(MBeanServerConnection connection) throws IOException {
List<BufferPoolMXBean> bufferPoolMXBeans = ManagementFactory.getPlatformMXBeans(connection,
BufferPoolMXBean.class);
if (bufferPoolMXBeans == null) {
return;
}
for (BufferPoolMXBean bufferPool : bufferPoolMXBeans) {
String name = bufferPool.getName().toLowerCase().trim();
if (name.contains(DIRECT)) {
directBufferPool = bufferPool;
} else if (name.contains(MAPPED)) {
mappedBufferPool = bufferPool;
}
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
@Override
public void sense(final MetricContext metricContext)
{
List<BufferPoolMXBean> pools = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
for (BufferPoolMXBean mxBean : pools) {
//TODO: something else?
String name = mxBean.getName();
Metric countMetric = Metric.define("BufferPoolCount_"+name);
Metric usedMetric = Metric.define("BufferPoolUsed_"+name);
Metric maxMetric = Metric.define("BufferPoolMax_"+name);
metricContext.record(countMetric, mxBean.getCount(), Unit.NONE);
metricContext.record(usedMetric, mxBean.getMemoryUsed() / M, Unit.MEGABYTE);
metricContext.record(maxMetric, mxBean.getTotalCapacity() / M, Unit.MEGABYTE);
}
}
public void testByteBufferMXBeanMethods() {
List<BufferPoolMXBean> byteBufferPools =
ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
for (int counter = 0; counter < 10; counter++) {
for (BufferPoolMXBean bean: byteBufferPools) {
// Name should not be blank or null
assertNotNull ("MXBean name is null", bean.getName());
assertFalse ("MXBean name is blank", bean.getName().equalsIgnoreCase(""));
// Total capacity should not be negative
assertTrue (bean.getName() + "'s total capacity was not greater than zero", bean.getTotalCapacity() >= 0);
// Likewise memoryUsed
assertTrue (bean.getName() + "'s memory used was not greater than zero", bean.getMemoryUsed() >= 0);
assertTrue (bean.getName() + "'s object name is null or blank",
bean.getObjectName() != null && bean.getObjectName().toString() != "");
}
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
@Override
public Object next() {
if (!beforeFirst) {
throw new IllegalStateException();
}
beforeFirst = false;
final MemoryInfo memoryInfo = new MemoryInfo();
final NodeEndpoint endpoint = dbContext.getEndpoint();
memoryInfo.hostname = endpoint.getAddress();
memoryInfo.fabric_port = endpoint.getFabricPort();
final MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
memoryInfo.heap_current = heapMemoryUsage.getUsed();
memoryInfo.heap_max = heapMemoryUsage.getMax();
BufferPoolMXBean directBean = getDirectBean();
memoryInfo.jvm_direct_current = directBean.getMemoryUsed();
memoryInfo.direct_current = dbContext.getAllocator().getAllocatedMemory();
memoryInfo.direct_max = VM.getMaxDirectMemory();
return memoryInfo;
}
AbstractContainer(
final Map<String, Object> attributes,
SystemConfig parent)
{
super(parent, attributes);
_parent = parent;
_eventLogger = parent.getEventLogger();
_jvmArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
BufferPoolMXBean bufferPoolMXBean = null;
List<BufferPoolMXBean> bufferPoolMXBeans = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
for(BufferPoolMXBean mBean : bufferPoolMXBeans)
{
if (mBean.getName().equals("direct"))
{
bufferPoolMXBean = mBean;
break;
}
}
_bufferPoolMXBean = bufferPoolMXBean;
if(attributes.get(CONFIDENTIAL_CONFIGURATION_ENCRYPTION_PROVIDER) != null )
{
_confidentialConfigurationEncryptionProvider =
String.valueOf(attributes.get(CONFIDENTIAL_CONFIGURATION_ENCRYPTION_PROVIDER));
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}
static void submitTasks(ExecutorService executor, int count) {
for (int i=0; i < count && !failed; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
List<PlatformManagedObject> mbeans = new ArrayList<>();
mbeans.add(ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class));
mbeans.addAll(ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class));
for (PlatformManagedObject pmo : mbeans) {
// Name should not be null
if (pmo.getObjectName() == null) {
failed = true;
throw new RuntimeException("TEST FAILED: getObjectName() returns null");
}
}
}
});
}
}
static void check(List<BufferPoolMXBean> pools,
int minBufferCount,
long minTotalCapacity)
{
int bufferCount = 0;
long totalCap = 0;
long totalMem = 0;
for (BufferPoolMXBean pool: pools) {
bufferCount += pool.getCount();
totalCap += pool.getTotalCapacity();
totalMem += pool.getMemoryUsed();
}
if (bufferCount < minBufferCount)
throw new RuntimeException("Count less than expected");
if (totalMem < minTotalCapacity)
throw new RuntimeException("Memory usage less than expected");
if (totalCap < minTotalCapacity)
throw new RuntimeException("Total capacity less than expected");
}