public VSizeFrame(IHyracksFrameMgrContext ctx, int frameSize) throws HyracksDataException { this.minFrameSize = ctx.getInitialFrameSize(); this.ctx = ctx; buffer = ctx.allocateFrame(frameSize); }
public BufferManagerBackedVSizeFrame(IHyracksFrameMgrContext ctx, ISimpleFrameBufferManager bufferManager) throws HyracksDataException { this(ctx, ctx.getInitialFrameSize(), bufferManager); }
@Override public void deAllocateBuffer(ByteBuffer buffer) { if (buffer.capacity() != ctx.getInitialFrameSize()) { // simply deallocate the Big Object frame ctx.deallocateFrames(buffer.capacity()); allocated -= buffer.capacity(); } else { buffers.add(buffer); } }
ByteBuffer getFrame(int size) throws HyracksDataException { currentByteSize += size; return ctx.allocateFrame(size); }
@Override public void close() { int nFrames = contents.size(); for (int i = 0; i < headers.length; i++) { headers[i] = null; } contents.clear(); currentOffsetInEachFrameList.clear(); tupleCount = 0; currentByteSize = 0; currentLargestFrameNumber = 0; ctx.deallocateFrames(nFrames); }
@Override public void ensureFrameSize(int newSize) throws HyracksDataException { if (newSize > getFrameSize()) { buffer = ctx.reallocateFrame(buffer, newSize, true); } }
public VSizeFrame(IHyracksFrameMgrContext ctx) throws HyracksDataException { this(ctx, ctx.getInitialFrameSize()); }
private ByteBuffer createNewFrame(int frameSize) throws HyracksDataException { allocated += frameSize; return ctx.allocateFrame(frameSize); }
@Override public void close() { for (Iterator<ByteBuffer> iter = buffers.iterator(); iter.hasNext();) { ByteBuffer next = iter.next(); ctx.deallocateFrames(next.capacity()); iter.remove(); } allocated = 0; buffers.clear(); } }
@Override public void resize(int frameSize) throws HyracksDataException { if (getFrameSize() != frameSize) { buffer = ctx.reallocateFrame(buffer, frameSize, false); } }
@Override public int getMinFrameSize() { return ctx.getInitialFrameSize(); }
private ByteBuffer createNewFrame(int frameSize) throws HyracksDataException { buffers.add(ctx.allocateFrame(frameSize)); allocateMem += frameSize; return reuseFrame(buffers.size() - 1); }
private int deAllocateFrame(int id) { ByteBuffer frame = buffers.get(id); ctx.deallocateFrames(frame.capacity()); buffers.set(id, null); used.set(id); allocateMem -= frame.capacity(); return frame.capacity(); }
public BufferManagerBackedVSizeFrame(IHyracksFrameMgrContext ctx, int frameSize, ISimpleFrameBufferManager bufferManager) throws HyracksDataException { this.ctx = ctx; this.minFrameSize = ctx.getInitialFrameSize(); this.bufferManager = bufferManager; frame = bufferManager.acquireFrame(frameSize); }
private ByteBuffer mergeExistingFrames(int frameSize) throws HyracksDataException { int mergedSize = memBudget - allocated; for (Iterator<ByteBuffer> iter = buffers.iterator(); iter.hasNext();) { ByteBuffer buffer = iter.next(); iter.remove(); mergedSize += buffer.capacity(); ctx.deallocateFrames(buffer.capacity()); allocated -= buffer.capacity(); if (mergedSize >= frameSize) { return createNewFrame(mergedSize); } } return null; }
/** * The constructor of the VariableFramePool. * * @param ctx * @param memBudgetInBytes * the given memory budgets to allocate the frames. If it less than 0, it will be treated as unlimited budgets */ public VariableFramePool(IHyracksFrameMgrContext ctx, int memBudgetInBytes) { this.ctx = ctx; this.minFrameSize = ctx.getInitialFrameSize(); this.allocateMem = 0; if (memBudgetInBytes == UNLIMITED_MEMORY) { this.memBudget = Integer.MAX_VALUE; this.buffers = new ArrayList<>(); this.used = new BitSet(); } else { this.memBudget = memBudgetInBytes; this.buffers = new ArrayList<>(memBudgetInBytes / minFrameSize); this.used = new BitSet(memBudgetInBytes / minFrameSize); } }
public SimpleSerializableHashTable(int tableSize, final IHyracksFrameMgrContext ctx, boolean frameInitRequired) throws HyracksDataException { this.ctx = ctx; frameSize = ctx.getInitialFrameSize(); int residual = tableSize * INT_SIZE * 2 % frameSize == 0 ? 0 : 1; int headerSize = tableSize * INT_SIZE * 2 / frameSize + residual; headers = new IntSerDeBuffer[headerSize]; this.tableSize = tableSize; if (frameInitRequired) { ByteBuffer newFrame = getFrame(frameSize); if (newFrame == null) { throw new HyracksDataException("Can't initialize the Hash Table. Please assign more memory."); } IntSerDeBuffer frame = new IntSerDeBuffer(newFrame); frameCapacity = frame.capacity(); contents.add(frame); currentOffsetInEachFrameList.add(0); } }