415800_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

415800_zh-CN

415800_zh-CN

imx53 视频 DMA 内存碎片<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我们使用模拟视频输入在 imx53 标准平台的屏幕上显示视频,但该平台在长时间显示视频时会出现问题。 平均而言,我们发现在屏幕上显示视频画面大约 3 周后,就会出现 DMA 内存碎片。 DMA 内存碎片过多,导致视频无法启动,因为它无法分配足够大的连续内存块,也就无法显示视频。

Linux 内核为 2.6.35.3 11_09,我们使用命令运行视频

/unit_tests/mxc_v4l2_tvin.out -ow 450 -oh 600 -ol 550 -ot 1 -r 6 -f YU12

我发现 cat /proc/buddyinfo 显示,随着时间的推移,空闲插槽的大小已降至启动视频所需的 0。

我发现这个内核版本不支持内存压缩,该版本旨在重新排序插槽以修复我们看到的内存碎片问题。

问题是

有没有人发现在 imx53 linux 2.6.35.3 11_09 映像上长时间显示视频有问题。

是否有人发现需要压缩内存碎片,因为在 2.6.35 版本中编译不成功。内核

提前感谢!

Tim

i.MX53Re: imx53 video DMA memory fragmentation

我们也开始遇到这种情况了。

在我们的例子中,这是由视频输入定期关闭和打开(以不同的比例显示图像)触发信号的。每次发生这种情况时(在"open()" 上),驱动程序都会分配一个非常大的"假缓冲区" 和四个"屏幕缓冲区" ,所有缓冲区都来自连续的 DMA 内存。

TX53 不断将日志记录到 U 盘上,使情况变得更糟。这些操作会缓存所有文件数据,这就是造成碎片的主要原因。"drop_caches" 的建议可以解决这个问题,但会导致停滞和其他问题。

尝试获取虚拟缓冲区失败。驾驶员有一个问题,那就是他们不能从中恢复过来。即使内存被释放,驱动程序也无法重新工作,直到设备电源循环。那是另一个错误。

有一个 2011 年的补丁"ENGR00159773-1" ,可以缓存虚拟缓冲区。后来有一个补丁"ENGR00169880" 在"probe()" 而不是在第一个"open()" 上分配这个缓冲区。

应用这些补丁(如果你有更新的版本,你应该已经有这些补丁了)会使其持续更长时间,但是它无法分配四个 " 帧缓冲区 " 中的第二个。目前还没有缓存这些数据的补丁(但应该有)。

建议"echo 1> /proc/sys/vm/lowmem_reserve_ratio" 确实解决了我们的问题。


Re: imx53 video DMA memory fragmentation<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好

以下是有关该问题的考虑因素。

通常,SoC 外围设备使用 dma_alloc_coherent()分配内存;

该内核函数将返回连续的内存区域。

保留连续内存区域 :

$ echo 1> /proc/sys/vm/lowmem_reserve_ratio

这样设置参数后,内核将防止应用程序和文件
缓存 "过多 "的内存碎片。不过,这将限制应用程序分配的
内存量。

用于删除缓存 :

$ echo 3> /proc/sys/vm/drop_caches

这将释放所有系统缓存,但会对系统中运行
的其他应用程序造成影响,因为每次缓存释放时,这些应用程序都需要加载它们使用的文件。

被放弃。

有一些工具可以避免特定应用程序的文件缓存,如
pagecache-management

https://code.google.com/p/pagecache-mangagement

这是一个开放源码项目,没有得到飞思卡尔公司的维护和支持,
,但无论如何,它都可以帮助实现我们的意图。


祝您愉快,
Yuri

-----------------------------------------------------------------------------------------------------------------------
注:如果本帖回答了您的问题,请点击正确答案按钮。Thank you!
-----------------------------------------------------------------------------------------------------------------------

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 02:07 AM
Updated by: