com.gemstone.gemfire.management.internal.beans.DiskRegionBridge Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gemfire-core Show documentation
Show all versions of gemfire-core Show documentation
SnappyData store based off Pivotal GemFireXD
The newest version!
/*
* 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.management.internal.beans;
import com.gemstone.gemfire.internal.cache.DiskDirectoryStats;
import com.gemstone.gemfire.internal.cache.DiskRegionStats;
import com.gemstone.gemfire.management.internal.ManagementConstants;
import com.gemstone.gemfire.management.internal.beans.stats.AggregateRegionStatsMonitor;
import com.gemstone.gemfire.management.internal.beans.stats.MBeanStatsMonitor;
import com.gemstone.gemfire.management.internal.beans.stats.StatType;
import com.gemstone.gemfire.management.internal.beans.stats.StatsAverageLatency;
import com.gemstone.gemfire.management.internal.beans.stats.StatsKey;
import com.gemstone.gemfire.management.internal.beans.stats.StatsRate;
/**
*
* @author rishim
*
*/
public class DiskRegionBridge {
private DiskRegionStats diskRegionStats;
private AggregateRegionStatsMonitor aggregateRegionMonitor;
private MBeanStatsMonitor diskRegionMonitor;
private StatsAverageLatency diskRegionReadsAverageLatency;
private StatsAverageLatency diskRegionWritesAverageLatency;
private StatsRate diskRegionReadsRate;
private StatsRate diskRegionWritesRate;
public static final String DISK_REGION_MONITOR = "DiskRegionMonitor";
private static final String REGION_MONITOR = "MemberLevelRegionMonitor";
public DiskRegionBridge(DiskRegionStats stats) {
this.diskRegionStats = stats;
this.aggregateRegionMonitor = new AggregateRegionStatsMonitor(REGION_MONITOR);
this.diskRegionMonitor = new MBeanStatsMonitor(DISK_REGION_MONITOR);
addDiskRegionStats(diskRegionStats);
this.configureDiskRegionMetrics();
}
private Number getDiskRegionStatistic(String statName) {
if (diskRegionStats != null) {
return diskRegionStats.getStats().get(statName);
} else {
return ManagementConstants.ZERO;
}
}
public void stopMonitor() {
diskRegionMonitor.stopListener();
aggregateRegionMonitor.stopListener();
}
public void addDirectoryStats(DiskDirectoryStats diskDirStats) {
aggregateRegionMonitor.addStatisticsToMonitor(diskDirStats.getStats());
}
public void addDiskRegionStats(DiskRegionStats diskRegionStats) {
diskRegionMonitor.addStatisticsToMonitor(diskRegionStats.getStats());
}
private void configureDiskRegionMetrics() {
diskRegionReadsRate = new StatsRate(StatsKey.DISK_READS, StatType.LONG_TYPE, diskRegionMonitor);
diskRegionWritesRate = new StatsRate(StatsKey.DISK_WRITES, StatType.LONG_TYPE, diskRegionMonitor);
diskRegionReadsAverageLatency = new StatsAverageLatency(StatsKey.DISK_READS, StatType.LONG_TYPE,
StatsKey.DISK_REGION_READ_TIME, diskRegionMonitor);
diskRegionWritesAverageLatency = new StatsAverageLatency(StatsKey.DISK_WRITES, StatType.LONG_TYPE,
StatsKey.DISK_REGION_WRITE_TIMES, diskRegionMonitor);
}
public float getDiskReadsRate() {
return diskRegionReadsRate.getRate();
}
public float getDiskWritesRate() {
return diskRegionWritesRate.getRate();
}
public long getDiskReadsAverageLatency() {
return diskRegionReadsAverageLatency.getAverageLatency();
}
public long getDiskWritesAverageLatency() {
return diskRegionWritesAverageLatency.getAverageLatency();
}
public long getTotalDiskWritesProgress() {
return getDiskRegionStatistic(StatsKey.DISK_REGION_WRITE_IN_PROGRESS).longValue();
}
public long getTotalDiskEntriesInVM() {
return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_VM).longValue();
}
public long getTotalEntriesOnlyOnDisk() {
return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_DISK).longValue();
}
public long getDiskUsage() {
long diskSpaceUsage = aggregateRegionMonitor.getDiskSpace();
return diskSpaceUsage;
}
public long getDiskTaskWaiting() {
return ManagementConstants.NOT_AVAILABLE_LONG;
}
}