@Override public List<IVirtualBufferCache> getVirtualBufferCaches(INCServiceContext ctx, FileReference fileRef) throws HyracksDataException { List<IVirtualBufferCache> vbcs = new ArrayList<>(); for (int i = 0; i < 2; i++) { IVirtualBufferCache vbc = new VirtualBufferCache(new HeapBufferAllocator(), pageSize, numPages / 2); vbcs.add(vbc); } return vbcs; } }
@Override public void purgeHandle(int fileId) throws HyracksDataException { deleteFile(fileId); }
@Override public void openFile(int fileId) throws HyracksDataException { logStats(); }
@Override public ICachedPage pin(long dpid, boolean newPage) throws HyracksDataException { VirtualPage page; int hash = hash(dpid); CacheBucket bucket = buckets[hash]; bucket.bucketLock.lock(); BufferedFileHandle.getPageId(dpid), fileRef); page = getOrAllocPage(dpid); page.next(bucket.cachedPage); bucket.cachedPage = page;
@Override public void reset() { recycleAllPages(); used.set(0); largePages.set(0); }
@Override public String toString() { return JSONUtil.fromMap(toMap()); }
private void recycleAllPages() { for (int i = 0; i < buckets.length; i++) { final CacheBucket bucket = buckets[i]; bucket.bucketLock.lock(); try { VirtualPage curr = bucket.cachedPage; while (curr != null) { bucket.cachedPage = curr.next(); recycle(curr); curr = bucket.cachedPage; } } finally { bucket.bucketLock.unlock(); } } }
private List<IVirtualBufferCache> initializeVirtualBufferCaches(IResourceMemoryManager memoryManager, int ioDeviceNum, int numPages) { List<IVirtualBufferCache> vbcs = new ArrayList<>(); for (int i = 0; i < storageProperties.getMemoryComponentsNum(); i++) { MultitenantVirtualBufferCache vbc = new MultitenantVirtualBufferCache( new VirtualBufferCache(new ResourceHeapBufferAllocator(memoryManager, Integer.toString(datasetID)), storageProperties.getMemoryComponentPageSize(), numPages / storageProperties.getMemoryComponentsNum() / numPartitions)); vbcs.add(vbc); } ioDeviceVirtualBufferCaches.put(ioDeviceNum, vbcs); return vbcs; } }
@Override public void deleteFile(FileReference fileRef) throws HyracksDataException { synchronized (fileMapManager) { int fileId = fileMapManager.lookupFileId(fileRef); deleteFile(fileId); } }
@Override public int openFile(FileReference fileRef) throws HyracksDataException { try { synchronized (fileMapManager) { if (fileMapManager.isMapped(fileRef)) { return fileMapManager.lookupFileId(fileRef); } return fileMapManager.registerFile(fileRef); } } finally { logStats(); } }
public void setUp() throws HyracksDataException { ioManager = TestStorageManagerComponentHolder.getIOManager(); ioDeviceId = 0; onDiskDir = ioManager.getIODevices().get(ioDeviceId).getMount() + sep + "lsm_btree_" + simpleDateFormat.format(new Date()) + sep; ctx = TestUtils.create(getHyracksFrameSize()); TestStorageManagerComponentHolder.init(diskPageSize, diskNumPages, diskMaxOpenFiles); file = ioManager.resolveAbsolutePath(onDiskDir); diskBufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx.getJobletContext().getServiceContext()); virtualBufferCaches = new ArrayList<>(); for (int i = 0; i < numMutableComponents; i++) { IVirtualBufferCache virtualBufferCache = new VirtualBufferCache(new HeapBufferAllocator(), memPageSize, memNumPages / numMutableComponents); virtualBufferCaches.add(virtualBufferCache); } rnd.setSeed(RANDOM_SEED); }
protected void init(int pageSize, int numPages, ITypeTraits[] typeTraits, IBinaryComparatorFactory[] cmpFactories) throws HyracksDataException { bufferCache = new VirtualBufferCache(new HeapBufferAllocator(), pageSize, numPages); BTreeTypeAwareTupleWriterFactory tupleWriterFactory = new BTreeTypeAwareTupleWriterFactory(typeTraits, false); ITreeIndexFrameFactory leafFrameFactory = new BTreeNSMLeafFrameFactory(tupleWriterFactory); ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(tupleWriterFactory); IPageManager freePageManager = new VirtualFreePageManager(bufferCache); btree = new BTree(bufferCache, freePageManager, interiorFrameFactory, leafFrameFactory, cmpFactories, typeTraits.length, file); }
for (int i = 0; i < 2; i++) { IVirtualBufferCache virtualBufferCache = new VirtualBufferCache(new HeapBufferAllocator(), inMemPageSize, inMemNumPages / 2); virtualBufferCaches.add(virtualBufferCache);