use of org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer in project neo4j by neo4j.
the class PageCacheTest method tracerMustBeNotifiedOfReadAndWritePins.
@Test
void tracerMustBeNotifiedOfReadAndWritePins() throws Exception {
final AtomicInteger writeCount = new AtomicInteger();
final AtomicInteger readCount = new AtomicInteger();
DefaultPageCacheTracer tracer = new DefaultPageCacheTracer();
DefaultPageCursorTracer pageCursorTracer = new DefaultPageCursorTracer(tracer, "test") {
@Override
public PinEvent beginPin(boolean writeLock, long filePageId, PageSwapper swapper) {
(writeLock ? writeCount : readCount).getAndIncrement();
return super.beginPin(writeLock, filePageId, swapper);
}
};
getPageCache(fs, maxPages, tracer);
generateFileWithRecords(file("a"), recordCount, recordSize);
int pinsForRead = 13;
int pinsForWrite = 42;
try (PagedFile pagedFile = map(file("a"), filePageSize)) {
try (PageCursor cursor = pagedFile.io(0, PF_SHARED_READ_LOCK, new CursorContext(pageCursorTracer))) {
for (int i = 0; i < pinsForRead; i++) {
assertTrue(cursor.next());
}
}
dirtyManyPages(pagedFile, pinsForWrite, new CursorContext(pageCursorTracer));
}
assertThat(readCount.get()).as("wrong read pin count").isEqualTo(pinsForRead);
assertThat(writeCount.get()).as("wrong write pin count").isEqualTo(pinsForWrite);
}
use of org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer in project neo4j by neo4j.
the class ReadOnlyTransactionIdStoreIT method testPageCacheAccessOnTransactionIdStoreConstruction.
@Test
void testPageCacheAccessOnTransactionIdStoreConstruction() throws IOException {
var pageCacheTracer = new DefaultPageCacheTracer();
var cursorContext = new CursorContext(pageCacheTracer.createPageCursorTracer("testPageCacheAccessOnTransactionIdStoreConstruction"));
new ReadOnlyTransactionIdStore(fs, pageCache, databaseLayout, cursorContext);
PageCursorTracer cursorTracer = cursorContext.getCursorTracer();
assertThat(cursorTracer.pins()).isEqualTo(4);
assertThat(cursorTracer.unpins()).isEqualTo(4);
assertThat(cursorTracer.hits()).isEqualTo(4);
}
use of org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer in project neo4j by neo4j.
the class PageCachePrefetchingTest method setUp.
@BeforeEach
void setUp() {
file = dir.createFile("file");
cursorContext = new CursorContext(new DefaultPageCursorTracer(new DefaultPageCacheTracer(), "test"));
}
use of org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer in project neo4j by neo4j.
the class FullScanStoreViewTest method tracePageCacheAccessOnRelationshipStoreScan.
@Test
void tracePageCacheAccessOnRelationshipStoreScan() throws Exception {
// enforce checkpoint to flush tree caches
checkPointer.forceCheckPoint(new SimpleTriggerInfo("forcedCheckpoint"));
var pageCacheTracer = new DefaultPageCacheTracer();
var propertyScanConsumer = new TestPropertyScanConsumer();
var scan = new RelationshipStoreScan(Config.defaults(), storageEngine.newReader(), locks, null, propertyScanConsumer, new int[] { relTypeId }, id -> true, false, jobScheduler, pageCacheTracer, INSTANCE);
scan.run(NO_EXTERNAL_UPDATES);
assertThat(propertyScanConsumer.batches.get(0).size()).isEqualTo(2);
assertThat(pageCacheTracer.pins()).isEqualTo(3);
assertThat(pageCacheTracer.unpins()).isEqualTo(3);
assertThat(pageCacheTracer.hits()).isEqualTo(3);
}
use of org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer in project neo4j by neo4j.
the class LabelScanNodeViewTracingIT method tracePageCacheAccess.
@Test
void tracePageCacheAccess() throws Exception {
int nodeCount = 1000;
var label = Label.label("marker");
try (var tx = database.beginTx()) {
for (int i = 0; i < nodeCount; i++) {
var node = tx.createNode(label);
node.setProperty("a", randomAscii(10));
}
tx.commit();
}
var labelId = getLabelId(label);
var cacheTracer = new DefaultPageCacheTracer();
IndexProxy indexProxy = indexingService.getIndexProxy(findTokenIndex());
var scan = new LabelIndexedNodeStoreScan(Config.defaults(), storageEngine.newReader(), lockService, indexProxy.newTokenReader(), new TestTokenScanConsumer(), null, new int[] { labelId }, any -> false, false, jobScheduler, cacheTracer, INSTANCE);
scan.run(StoreScan.NO_EXTERNAL_UPDATES);
assertThat(cacheTracer.pins()).isEqualTo(3);
assertThat(cacheTracer.unpins()).isEqualTo(3);
assertThat(cacheTracer.hits()).isEqualTo(3);
}
Aggregations