Search in sources :

Example 41 with DefaultPageCacheTracer

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);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) DefaultPageCursorTracer(org.neo4j.io.pagecache.tracing.cursor.DefaultPageCursorTracer) CursorContext(org.neo4j.io.pagecache.context.CursorContext) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) RepeatedTest(org.junit.jupiter.api.RepeatedTest) Test(org.junit.jupiter.api.Test)

Example 42 with DefaultPageCacheTracer

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);
}
Also used : PageCursorTracer(org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer) CursorContext(org.neo4j.io.pagecache.context.CursorContext) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) Test(org.junit.jupiter.api.Test)

Example 43 with DefaultPageCacheTracer

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"));
}
Also used : DefaultPageCursorTracer(org.neo4j.io.pagecache.tracing.cursor.DefaultPageCursorTracer) CursorContext(org.neo4j.io.pagecache.context.CursorContext) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 44 with DefaultPageCacheTracer

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);
}
Also used : SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) Test(org.junit.jupiter.api.Test)

Example 45 with DefaultPageCacheTracer

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);
}
Also used : IndexProxy(org.neo4j.kernel.impl.api.index.IndexProxy) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) Test(org.junit.jupiter.api.Test)

Aggregations

DefaultPageCacheTracer (org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer)79 Test (org.junit.jupiter.api.Test)66 CursorContext (org.neo4j.io.pagecache.context.CursorContext)49 PageCursorTracer (org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer)26 Path (java.nio.file.Path)11 RepeatedTest (org.junit.jupiter.api.RepeatedTest)10 MutableLong (org.apache.commons.lang3.mutable.MutableLong)9 Transaction (org.neo4j.graphdb.Transaction)9 PageCache (org.neo4j.io.pagecache.PageCache)9 Test (org.junit.Test)5 BeforeEach (org.junit.jupiter.api.BeforeEach)5 DelegatingPageCache (org.neo4j.io.pagecache.DelegatingPageCache)5 PagedFile (org.neo4j.io.pagecache.PagedFile)5 Config (org.neo4j.configuration.Config)3 PageCacheTest (org.neo4j.io.pagecache.PageCacheTest)3 PageCursor (org.neo4j.io.pagecache.PageCursor)3 PageCacheStressTest (org.neo4j.io.pagecache.stress.PageCacheStressTest)3 PageCacheTracer (org.neo4j.io.pagecache.tracing.PageCacheTracer)3 DefaultPageCursorTracer (org.neo4j.io.pagecache.tracing.cursor.DefaultPageCursorTracer)3 NodeRecord (org.neo4j.kernel.impl.store.record.NodeRecord)3