Multithreading 连续内存分配(CMA)保留大小与系统内存

Multithreading 连续内存分配(CMA)保留大小与系统内存,multithreading,memory-management,kernel,ram,dma,Multithreading,Memory Management,Kernel,Ram,Dma,我们正在开发一个多媒体密集型应用程序,该应用程序在飞思卡尔imx6q上运行,内存为1GB。该系统配备了一个14Mpixel摄像头。为了处理来自这个相机的数据,我们使用了大量巨大的原始缓冲区(每个29MB) 事实上,我相信至少我们正在使用: PCIe DMA使用的3*29MB(v4l2的环形缓冲区)+1*29MB(v4l2的dummybuffer)+1*29MB(缓冲区的本地副本)+50MB 在许多情况下,连续内存空间不足,系统无法分配所需的所有缓冲区 在内核中,CONFIG_CMA_SIZE_M

我们正在开发一个多媒体密集型应用程序,该应用程序在飞思卡尔imx6q上运行,内存为1GB。该系统配备了一个14Mpixel摄像头。为了处理来自这个相机的数据,我们使用了大量巨大的原始缓冲区(每个29MB)

事实上,我相信至少我们正在使用: PCIe DMA使用的3*29MB(v4l2的环形缓冲区)+1*29MB(v4l2的dummybuffer)+1*29MB(缓冲区的本地副本)+50MB

在许多情况下,连续内存空间不足,系统无法分配所需的所有缓冲区

在内核中,CONFIG_CMA_SIZE_MBYTES=256,CONFIG_CMA_AREAS=7

我正在研究将CMA大小提高到384MB的可能性,但担心这会影响系统性能,因为正在运行的应用程序是多线程的。这说明(1GB-384MB)是应用程序和系统运行的剩余空间

问题是,将CMA提高到384会影响系统性能吗


考虑到系统具有1GB ram,适合我们的应用程序的保留CMA内存的最佳大小是多少?

我的情况与此类似。通过调整CMA_大小,你得到了什么有趣的结果吗?是的,CMA大小增加了。我们的应用程序能够在不超出连续空间的情况下分配如此大的缓冲区。