在 linux 内核中选择内存分配 api 以频繁分配大量内存
Choosing memory allocation api in linux kernel for allocating huge memory frequently
我不得不在我的内核驱动程序中频繁分配大量内存。哪种内存分配 api 更好用,为什么?
如果您需要大量分配,kmalloc()
不是一个好主意,因为一旦物理地址 space 变得碎片化,大量 kmalloc()
分配将经常失败。
所以 vmalloc()
/ vfree()
很可能是要走的路 - 除非你需要与硬件设备共享缓冲区,在这种情况下查看 CMA(连续内存分配器), dma_alloc_from_contiguous()
/ dma_release_from_contiguous()
.
我不得不在我的内核驱动程序中频繁分配大量内存。哪种内存分配 api 更好用,为什么?
如果您需要大量分配,kmalloc()
不是一个好主意,因为一旦物理地址 space 变得碎片化,大量 kmalloc()
分配将经常失败。
所以 vmalloc()
/ vfree()
很可能是要走的路 - 除非你需要与硬件设备共享缓冲区,在这种情况下查看 CMA(连续内存分配器), dma_alloc_from_contiguous()
/ dma_release_from_contiguous()
.