blob: 6c71ebf3096d0a8482100892f172b0bb75bb8097 [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.processors.igfs;
import java.util.concurrent.atomic.LongAdder;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteBiTuple;
/**
* Value object holding all local IGFS metrics which cannot be determined using file system traversal.
*/
public class IgfsLocalMetrics {
/** Block reads. First value - total reads, second value - reads delegated to the secondary file system. */
private volatile IgniteBiTuple<LongAdder, LongAdder> blocksRead;
/** Block writes. First value - total writes, second value - writes delegated to the secondary file system. */
private volatile IgniteBiTuple<LongAdder, LongAdder> blocksWritten;
/** Byte reads. First value - total bytes read, second value - consumed time. */
private volatile IgniteBiTuple<LongAdder, LongAdder> bytesRead;
/** Byte writes. First value - total bytes written, second value - consumed time. */
private volatile IgniteBiTuple<LongAdder, LongAdder> bytesWritten;
/** Number of files opened for read. */
private final LongAdder filesOpenedForRead = new LongAdder();
/** Number of files opened for write. */
private final LongAdder filesOpenedForWrite = new LongAdder();
/**
* Constructor.
*/
IgfsLocalMetrics() {
reset();
}
/**
* @return Read bytes.
*/
long readBytes() {
return bytesRead.get1().longValue();
}
/**
* @return Read bytes time.
*/
long readBytesTime() {
return bytesRead.get2().longValue();
}
/**
* Adds given numbers to read bytes and read time.
*
* @param readBytes Number of bytes read.
* @param readTime Read time.
*/
void addReadBytesTime(long readBytes, long readTime) {
IgniteBiTuple<LongAdder, LongAdder> bytesRead0 = bytesRead;
bytesRead0.get1().add(readBytes);
bytesRead0.get2().add(readTime);
}
/**
* @return Written bytes.
*/
long writeBytes() {
return bytesWritten.get1().longValue();
}
/**
* @return Write bytes time.
*/
long writeBytesTime() {
return bytesWritten.get2().longValue();
}
/**
* Adds given numbers to written bytes and write time.
*
* @param writtenBytes Number of bytes written.
* @param writeTime Write time.
*/
void addWrittenBytesTime(long writtenBytes, long writeTime) {
IgniteBiTuple<LongAdder, LongAdder> bytesWritten0 = bytesWritten;
bytesWritten0.get1().add(writtenBytes);
bytesWritten0.get2().add(writeTime);
}
/**
* @return Read blocks.
*/
long readBlocks() {
return blocksRead.get1().longValue();
}
/**
* @return Written blocks to secondary file system.
*/
long readBlocksSecondary() {
return blocksRead.get2().longValue();
}
/**
* Adds given numbers to read blocks counters.
*
* @param total Total number of blocks read.
* @param secondary Number of blocks read form secondary FS.
*/
void addReadBlocks(int total, int secondary) {
IgniteBiTuple<LongAdder, LongAdder> blocksRead0 = blocksRead;
blocksRead0.get1().add(total);
blocksRead0.get2().add(secondary);
}
/**
* @return Written blocks.
*/
long writeBlocks() {
return blocksWritten.get1().longValue();
}
/**
* @return Written blocks to secondary file system.
*/
long writeBlocksSecondary() {
return blocksWritten.get2().longValue();
}
/**
* Adds given numbers to write blocks counters.
*
* @param total Total number of block written.
* @param secondary Number of blocks written to secondary FS.
*/
void addWriteBlocks(int total, int secondary) {
IgniteBiTuple<LongAdder, LongAdder> blocksWritten0 = blocksWritten;
blocksWritten0.get1().add(total);
blocksWritten0.get2().add(secondary);
}
/**
* Increment files opened for read.
*/
void incrementFilesOpenedForRead() {
filesOpenedForRead.increment();
}
/**
* Decrement files opened for read.
*/
void decrementFilesOpenedForRead() {
filesOpenedForRead.decrement();
}
/**
* @return Files opened for read.
*/
int filesOpenedForRead() {
return filesOpenedForRead.intValue();
}
/**
* Increment files opened for write.
*/
void incrementFilesOpenedForWrite() {
filesOpenedForWrite.increment();
}
/**
* Decrement files opened for write.
*/
void decrementFilesOpenedForWrite() {
filesOpenedForWrite.decrement();
}
/**
* @return Files opened for write.
*/
int filesOpenedForWrite() {
return filesOpenedForWrite.intValue();
}
/**
* Reset summary counters.
*/
void reset() {
blocksRead = F.t(new LongAdder(), new LongAdder());
blocksWritten = F.t(new LongAdder(), new LongAdder());
bytesRead = F.t(new LongAdder(), new LongAdder());
bytesWritten = F.t(new LongAdder(), new LongAdder());
}
}