use of org.apache.cassandra.utils.memory.NativePool in project cassandra by apache.
the class Memtable method createMemtableAllocatorPool.
private static MemtablePool createMemtableAllocatorPool() {
long heapLimit = DatabaseDescriptor.getMemtableHeapSpaceInMiB() << 20;
long offHeapLimit = DatabaseDescriptor.getMemtableOffheapSpaceInMiB() << 20;
final float cleaningThreshold = DatabaseDescriptor.getMemtableCleanupThreshold();
final MemtableCleaner cleaner = ColumnFamilyStore::flushLargestMemtable;
switch(DatabaseDescriptor.getMemtableAllocationType()) {
case unslabbed_heap_buffers_logged:
return new HeapPool.Logged(heapLimit, cleaningThreshold, cleaner);
case unslabbed_heap_buffers:
return new HeapPool(heapLimit, cleaningThreshold, cleaner);
case heap_buffers:
return new SlabPool(heapLimit, 0, cleaningThreshold, cleaner);
case offheap_buffers:
return new SlabPool(heapLimit, offHeapLimit, cleaningThreshold, cleaner);
case offheap_objects:
return new NativePool(heapLimit, offHeapLimit, cleaningThreshold, cleaner);
default:
throw new AssertionError();
}
}
use of org.apache.cassandra.utils.memory.NativePool in project cassandra by apache.
the class CellSpecTest method data.
@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> data() {
TableMetadata table = TableMetadata.builder("testing", "testing").addPartitionKeyColumn("pk", BytesType.instance).build();
byte[] rawBytes = { 0, 1, 2, 3, 4, 5, 6 };
ByteBuffer bbBytes = ByteBuffer.wrap(rawBytes);
NativePool pool = new NativePool(1024, 1024, 1, () -> ImmediateFuture.success(true));
NativeAllocator allocator = pool.newAllocator(null);
OpOrder order = new OpOrder();
List<Cell<?>> tests = new ArrayList<>();
BiConsumer<ColumnMetadata, CellPath> fn = (column, path) -> {
tests.add(new ArrayCell(column, 1234, 1, 1, rawBytes, path));
tests.add(new BufferCell(column, 1234, 1, 1, bbBytes, path));
tests.add(new NativeCell(allocator, order.getCurrent(), column, 1234, 1, 1, bbBytes, path));
};
// simple
fn.accept(ColumnMetadata.regularColumn(table, bytes("simple"), BytesType.instance), null);
// complex
// seems NativeCell does not allow CellPath.TOP, or CellPath.BOTTOM
fn.accept(ColumnMetadata.regularColumn(table, bytes("complex"), ListType.getInstance(BytesType.instance, true)), CellPath.create(bytes(UUIDGen.getTimeUUID())));
return tests.stream().map(a -> new Object[] { a.getClass().getSimpleName() + ":" + (a.path() == null ? "simple" : "complex"), a }).collect(Collectors.toList());
}
use of org.apache.cassandra.utils.memory.NativePool in project cassandra by apache.
the class ClusteringHeapSizeTest method data.
@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> data() {
byte[] rawBytes = { 0, 1, 2, 3, 4, 5, 6 };
NativePool pool = new NativePool(1024, 1024, 1, () -> ImmediateFuture.success(true));
OpOrder order = new OpOrder();
ArrayClustering array = ArrayClustering.make(rawBytes);
BufferClustering buffer = BufferClustering.make(ByteBuffer.wrap(rawBytes));
return Arrays.asList(new Object[][] { { array }, { buffer }, { new NativeClustering(pool.newAllocator(null), order.getCurrent(), array) } });
}
Aggregations