写一个大文件可以防止大块DMA分配

时间:2012-11-10 20:17:14

标签: memory-management linux-kernel arm dma sata

我正在使用运行Linux(3.0.35)的基于ARM的处理器的电路板。主板有1GB RAM,连接到快速SSD HD和500万像素摄像头。

我的目标是捕获高分辨率图像并将其直接写入磁盘。

一直顺利,直到我试图保存一个很长的视频(超过1GB的数据),

保存一个大文件后,似乎我无法重新加载摄像头驱动程序 - 它无法为流分配足够大的DMA内存块(调用dma_alloc_coherent()时)。

我将其缩小到Linux启动的场景(当大部分内存可用时),然后我将随机数据写入一个大文件(> 1GB),当我尝试加载相机驱动程序时,它失败了。

对我的问题 -

当我打开一个文件进行写入,写入大量数据并关闭文件时,是不是用于将数据写入HD的内存应该被释放?

我可以理解为什么在HD访问期间内存会碎片化,但是当HD的事务完成时 - 为什么内存仍然如此碎片化以至于我无法分配15MB的连续RAM?

由于

1 个答案:

答案 0 :(得分:0)

  

[...]关闭文件,是不是用于将数据写入应该被释放的HD的内存?

不,它将缓存,您可以检查/proc/meminfodma_alloc_coherent()函数是否仅使用空闲内存是一个很好的问题。