内存管理
内存池设计详解。
概述
Mini-ImagePipe 采用双层内存池系统:
- 固定主机内存:用于快速异步传输
- 设备内存:用于 GPU 操作
最佳适配分配
内存管理器采用最佳适配分配策略来最小化碎片:
cpp
void* MemoryManager::allocateDevice(size_t size) {
// Find smallest block that fits
auto best = findBestFit(size);
if (best) {
// Split if much larger than needed
if (best->size > size + SPLIT_THRESHOLD) {
splitBlock(best, size);
}
return best->ptr;
}
// Allocate new block
return allocateNewBlock(size);
}内存池复用
缓冲区在流水线执行之间保留:
执行 1: 分配缓冲区
执行 2: 复用缓冲区(无分配)
执行 3: 复用缓冲区(无分配)
...配置
cpp
PipelineConfig config;
config.pinnedPoolSize = 64 * 1024 * 1024; // 64MB
// 设备内存池行为由 MemoryManager 内部管理。线程安全
MemoryManager 使用互斥锁实现线程安全的内存池操作。