Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/_docs/monitoring-metrics/new-metrics.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,8 @@ Register name: `io.statistics.cacheGroups.{group_name}`
|grpId | integer | Group id
|name | string | Name of the index
|startTime | long | Statistics collect start time
|insertedBytes | long | Count of inserted to store bytes
|removedBytes | long | Count of removed from store bytes
|===


Expand Down
15 changes: 15 additions & 0 deletions docs/_docs/monitoring-metrics/system-views.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -789,6 +789,21 @@ This view exposes information about the distribution of cache group partitions a
|IS_PRIMARY | boolean | Primary partition flag
|===

== LOCAL_CACHE_GROUPS_IO

This view exposes information about local node IO statistics for cache groups.

[{table_opts}]
|===
|Column | Data type | Description
|CACHE_GROUP_ID | int| Cache group ID
|CACHE_GROUP_NAME | string| Cache group name
|PHYSICAL_READS | long | Count of logical page reads
|LOGICAL_READS | long | Count of physical page reads
|INSERTED_BYTES | long | Count of inserted to store bytes
|REMOVED_BYTES | long | Count of removed from store bytes
|===

== BINARY_METADATA

This view exposes information about all available binary types.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -767,6 +767,8 @@ public void testGetAllColumns() throws Exception {
"SYS.LOCAL_CACHE_GROUPS_IO.CACHE_GROUP_NAME.null",
"SYS.LOCAL_CACHE_GROUPS_IO.PHYSICAL_READS.null",
"SYS.LOCAL_CACHE_GROUPS_IO.LOGICAL_READS.null",
"SYS.LOCAL_CACHE_GROUPS_IO.INSERTED_BYTES.null",
"SYS.LOCAL_CACHE_GROUPS_IO.REMOVED_BYTES.null",
"SYS.SQL_QUERIES_HISTORY.SCHEMA_NAME.null",
"SYS.SQL_QUERIES_HISTORY.SQL.null",
"SYS.SQL_QUERIES_HISTORY.LOCAL.null",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ public interface IoStatisticsHolder {
*/
public void trackPhysicalAndLogicalRead(long pageAddr);

/**
* Track insert data to the page.
*
* @param bytes Bytes inserted.
*/
public void trackPageInsertData(long bytes);

/**
* Track remove data from the page.
*
* @param bytes Bytes removed.
*/
public void trackPageRemoveData(long bytes);

/**
* @return Number of logical reads.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,24 @@ public class IoStatisticsHolderCache implements IoStatisticsHolder {
/** */
public static final String LOGICAL_READS = "LOGICAL_READS";

/** */
public static final String INSERTED_BYTES = "insertedBytes";

/** */
public static final String REMOVED_BYTES = "removedBytes";

/** */
private final LongAdderMetric logicalReadCtr;

/** */
private final LongAdderMetric physicalReadCtr;

/** */
private final LongAdderMetric insertedBytes;

/** */
private final LongAdderMetric removedBytes;

/** */
private final String grpName;

Expand All @@ -67,8 +79,10 @@ public IoStatisticsHolderCache(String grpName, int grpId, GridMetricManager mmgr
mreg.objectMetric("name", String.class, null).value(grpName);
mreg.intMetric("grpId", null).value(grpId);

this.logicalReadCtr = mreg.longAdderMetric(LOGICAL_READS, null);
this.physicalReadCtr = mreg.longAdderMetric(PHYSICAL_READS, null);
logicalReadCtr = mreg.longAdderMetric(LOGICAL_READS, "Count of logical page reads");
physicalReadCtr = mreg.longAdderMetric(PHYSICAL_READS, "Count of physical page reads");
insertedBytes = mreg.longAdderMetric(INSERTED_BYTES, "Count of inserted to store bytes");
removedBytes = mreg.longAdderMetric(REMOVED_BYTES, "Count of removed from store bytes");
}

/** {@inheritDoc} */
Expand All @@ -95,6 +109,16 @@ public IoStatisticsHolderCache(String grpName, int grpId, GridMetricManager mmgr
}
}

/** {@inheritDoc} */
@Override public void trackPageInsertData(long bytes) {
insertedBytes.add(bytes);
}

/** {@inheritDoc} */
@Override public void trackPageRemoveData(long bytes) {
removedBytes.add(bytes);
}

/** {@inheritDoc} */
@Override public long logicalReads() {
return logicalReadCtr.value();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,16 @@ public IoStatisticsHolderIndex(
}
}

/** {@inheritDoc} */
@Override public void trackPageInsertData(long bytes) {
// No-op.
}

/** {@inheritDoc} */
@Override public void trackPageRemoveData(long bytes) {
// No-op.
}

/** {@inheritDoc} */
@Override public long logicalReads() {
return logicalReadLeafCtr.value() + logicalReadInnerCtr.value();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,22 @@ private IoStatisticsHolderNoOp() {

/** {@inheritDoc} */
@Override public void trackLogicalRead(long pageAddr) {
// No-op.
}

/** {@inheritDoc} */
@Override public void trackPhysicalAndLogicalRead(long pageAddr) {
// No-op.
}

/** {@inheritDoc} */
@Override public void trackPageInsertData(long bytes) {
// No-op.
}

/** {@inheritDoc} */
@Override public void trackPageRemoveData(long bytes) {
// No-op.
}

/** {@inheritDoc} */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@ public class IoStatisticsHolderQuery implements IoStatisticsHolder {
physicalReadCtr.increment();
}

/** {@inheritDoc} */
@Override public void trackPageInsertData(long bytes) {
// No-op.
}

/** {@inheritDoc} */
@Override public void trackPageRemoveData(long bytes) {
// No-op.
}

/** {@inheritDoc} */
@Override public long logicalReads() {
return logicalReadCtr.longValue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,9 @@ private final class UpdateRowHandler extends PageHandler<T, Boolean> {

PageUtils.getBytes(pageAddr, data.offset(), payload, 0, rowSize);

statHolder.trackPageRemoveData(rowSize);
statHolder.trackPageInsertData(rowSize);

wal.log(new DataPageUpdateRecord(
cacheId,
pageId,
Expand Down Expand Up @@ -164,9 +167,9 @@ private class WriteRowHandler extends PageHandler<T, Integer> {
Boolean walPlc,
T row,
int written,
IoStatisticsHolder statHolder)
throws IgniteCheckedException {
written = addRow(pageId, page, pageAddr, iox, row, written);
IoStatisticsHolder statHolder
) throws IgniteCheckedException {
written = addRow(pageId, page, pageAddr, iox, row, written, statHolder);

putPage(((AbstractDataPageIO)iox).getFreeSpace(pageAddr), pageId, page, pageAddr, statHolder);

Expand All @@ -180,6 +183,7 @@ private class WriteRowHandler extends PageHandler<T, Integer> {
* @param iox IO.
* @param row Row to write.
* @param written Written size.
* @param statHolder IO statistics holder.
* @return Number of bytes written, {@link #COMPLETE} if the row was fully written.
* @throws IgniteCheckedException If failed.
*/
Expand All @@ -189,8 +193,9 @@ protected Integer addRow(
long pageAddr,
PageIO iox,
T row,
int written)
throws IgniteCheckedException {
int written,
IoStatisticsHolder statHolder
) throws IgniteCheckedException {
AbstractDataPageIO<T> io = (AbstractDataPageIO<T>)iox;

long lastLink = row.link();
Expand All @@ -209,6 +214,8 @@ protected Integer addRow(

evictionTracker.trackFragmentPage(pageId, lastLink, written == rowSize);

statHolder.trackPageInsertData(oldFreeSpace - io.getFreeSpace(pageAddr));

// Avoid boxing with garbage generation for usual case.
return written == rowSize ? COMPLETE : written;
}
Expand Down Expand Up @@ -324,8 +331,8 @@ private final class WriteRowsHandler extends PageHandler<GridCursor<T>, Integer>
Boolean walPlc,
GridCursor<T> cur,
int written,
IoStatisticsHolder statHolder)
throws IgniteCheckedException {
IoStatisticsHolder statHolder
) throws IgniteCheckedException {
AbstractDataPageIO<T> io = (AbstractDataPageIO<T>)iox;

// Fill the page up to the end.
Expand All @@ -341,7 +348,7 @@ private final class WriteRowsHandler extends PageHandler<GridCursor<T>, Integer>
break;
}

written = writeRowHnd.addRow(pageId, page, pageAddr, io, row, written);
written = writeRowHnd.addRow(pageId, page, pageAddr, io, row, written, statHolder);

assert written == COMPLETE;
}
Expand Down Expand Up @@ -377,8 +384,8 @@ private final class RemoveRowHandler extends PageHandler<ReuseBag, Long> {
Boolean walPlc,
ReuseBag reuseBag,
int itemId,
IoStatisticsHolder statHolder)
throws IgniteCheckedException {
IoStatisticsHolder statHolder
) throws IgniteCheckedException {
AbstractDataPageIO<T> io = (AbstractDataPageIO<T>)iox;

int oldFreeSpace = io.getFreeSpace(pageAddr);
Expand Down Expand Up @@ -418,6 +425,8 @@ else if (putIsNeeded)
put(null, pageId, page, pageAddr, newBucket, statHolder);
}

statHolder.trackPageRemoveData(newFreeSpace - oldFreeSpace);

// For common case boxed 0L will be cached inside of Long, so no garbage will be produced.
return nextLink;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
import org.apache.ignite.metric.MetricRegistry;
import org.apache.ignite.spi.metric.LongMetric;

import static org.apache.ignite.internal.metric.IoStatisticsHolderCache.INSERTED_BYTES;
import static org.apache.ignite.internal.metric.IoStatisticsHolderCache.LOGICAL_READS;
import static org.apache.ignite.internal.metric.IoStatisticsHolderCache.PHYSICAL_READS;
import static org.apache.ignite.internal.metric.IoStatisticsHolderCache.REMOVED_BYTES;

/**
* Cache group IO statistics representation for a {@link SystemView}.
Expand Down Expand Up @@ -81,4 +83,24 @@ public long logicalReads() {

return metric != null ? metric.value() : 0;
}

/**
* @return Inserted bytes into store.
*/
@Order(4)
public long insertedBytes() {
LongMetric metric = mreg.findMetric(INSERTED_BYTES);

return metric != null ? metric.value() : 0;
}

/**
* @return Removed bytes from store.
*/
@Order(5)
public long removedBytes() {
LongMetric metric = mreg.findMetric(REMOVED_BYTES);

return metric != null ? metric.value() : 0;
}
}
Loading
Loading