在 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().