This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:优化 TDA4VM 上 A72内核的 DDR 共享内存分配

Guru**** 1995165 points
Other Parts Discussed in Thread: TDA4VM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1446816/tda4vm-optimization-of-shared-memory-allocation-in-ddr-for-a72-core-on-tda4vm

器件型号:TDA4VM

工具与软件:

您好!

我将致力于为 TI TDA4VM 平台实现存储器管理器、在从 A72内核上的共享存储器区域(DDR)分配存储器时会遇到性能问题。

我正在使用 RTOS SDK 中 APP_UTILS 模块的共享内存分配器(APP_MEM_LINUX_DMA_HEAP.c)来分配内存。 allocate()函数主要涉及两个子函数:

DmaHeapAlloc:status = DmaHeapAlloc (obj->dma_heap_fd、size、flags、&dma_buf_fd);
该步骤在内部使用 ioctl()等系统调用、平均需要24微秒。

AddTupleToList : status = AddTupleToList(dma_buf_fd , size,&virtual_ptr ,&phys_addr);
这个步骤涉及 ioctl()、mmap()和 munmap()、平均需要36微秒。

总体而言、分配过程平均需要约55微秒、这对于我们的用例非常重要。

您能建议任何优化策略来提高共享内存分配的性能吗?
是否有替代实现或方法可以尝试减少这些系统调用的开销?


谢谢!



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [报价用户 id="45351" url="~/support/processors-group/processors/f/processors-forum/1446816/tda4vm-optimization-of-shared-memory-allocation-in-ddr-for-a72-core-on-tda4vm "]
    我正在使用 RTOS SDK 中 APP_UTILS 模块的共享内存分配器(APP_MEM_LINUX_DMA_HEAP.c)来分配内存。 allocate()函数主要涉及两个子函数:
    [报价]

    我将在内部检查它、然后回复给您。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    55微秒是非常少的时间,它如何影响你的用例? 您能详细说明一下吗?  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    您好!

    对于单个共享内存分配、55微秒似乎可以忽略不计。

    但是、当进行扩展(例如每帧分配10个共享内存缓冲区)时、累积分配时间会增加到每帧550微秒、这会显著影响实时处理要求。

    在缓冲区大小变化并且缓冲区无法有效重复使用的情况下、这种影响甚至变得更加严重、这进一步增加了开销。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每帧10个共享内存缓冲区

    但为什么一帧需要10个共享存储器缓冲区?  

    此外、分配通常仅在创建时完成、因此不会影响运行时的实时处理。

    此致、

    Brijesh