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.

[参考译文] AM4378:AM437X PVR 呈现问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1622404/am4378-am437x-pvr-rendering-problem

器件型号: AM4378

SDK:ti-processor-sdk-linux-AM437X-EVM-09.03.05.02

我的 Qt 嵌入式应用程序在 Qt 版本 5.15.15 的 AM437x 环境中运行。
由于 SDK 从 07.03.00.05 升级到 09.03.05.02、我的系统已更新为内核 6.1.119、并且文件系统也已更改。 更新后、我遇到了以下问题:

在不对应用程序代码进行任何更改(仅将交叉编译器和 sysroot 切换到 SDK 09.03.05.02 中的代码)的情况下、将内核从 5.4.106 升级到 6.1.119 后、我程序的 QSGRenderThread 线程的 CPU 利用率显著提高。 在相同条件下、与内核 5.4.106 上运行的程序相比、CPU 使用率增加了 10%。 Perf 分析表明在 QSGRrenderThread 中进行了大量 memcpy 运算、并且这种 CPU 利用率峰值直接归因于这些 memcpy 运算。
我现在怀疑这是由于渲染操作不是零复制或利用 DMA。

为什么会发生这种情况? 是否有任何可帮助我诊断和解决此问题的配置或操作?

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

    您好:  

    请留出一些时间在我们这边进行一些测试 我们将在收集到更多信息后立即作出回应。  

    谢谢、

    Shriya

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

    您好、是否有新信息?

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

    您好:  

    您是否能够提供正在运行的应用程序/示例代码? 我会就内存泄漏问题回复您;但是、这可能是与  QSGRenderThread 的初始问题不同的问题。  

    此致、

    Shriya

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

    您好、我使用 qt-wallerys-opensource-opensource-5.15.16.tar.xz 的示例 src、示例代码 是“qtdeclative/examples/quick/imageelements"</s>“

    kmemleak 信息为:

    [08:35:16850]root@CX15:~# cat /sys/kernel/debug/kmemleak
    [08:35:17012]unreferenced object 0xcbaf9b80 (size 64):
    [08:35:17012]  comm "QSGRenderThread", pid 262, jiffies 1649235 (age 35774.020s)
    [08:35:17012]  hex dump (first 32 bytes):
    [08:35:17012]    00 00 00 00 00 87 51 c4 00 69 c4 00 6b 6b 6b 6b  ......Q..i..kkkk
    [08:35:17012]    6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
    [08:35:17012]  backtrace:
    [08:35:17012]    [<c023cf80>] __kmalloc+0x40/0x178
    [08:35:17013]    [<bf0dd71c>] OSAllocMem_Impl+0x5c/0x70 [pvrsrvkm]
    [08:35:17013]    [<bf0e9928>] HASH_Insert_Extended+0x3c/0x164 [pvrsrvkm]
    [08:35:17013]    [<bf0e9a64>] HASH_Insert+0x14/0x1c [pvrsrvkm]
    [08:35:17013]    [<bf0ee178>] _AttemptAllocAligned+0x220/0x408 [pvrsrvkm]
    [08:35:17013]    [<bf0ee764>] RA_Alloc+0x5c/0x34c [pvrsrvkm]
    [08:35:17013]    [<bf0e5464>] BM_Alloc+0xf4/0x554 [pvrsrvkm]
    [08:35:17013]    [<bf0e5be4>] AllocDeviceMem.constprop.0+0xc4/0x1a0 [pvrsrvkm]
    [08:35:17013]    [<bf0e6428>] _PVRSRVAllocDeviceMemKM+0xe0/0x20c [pvrsrvkm]
    [08:35:17014]    [<bf0f1094>] PVRSRVAllocDeviceMemBW+0x180/0x434 [pvrsrvkm]
    [08:35:17014]    [<bf0f2ea0>] BridgedDispatchKM+0x8c/0x22c [pvrsrvkm]
    [08:35:17014]    [<bf0e1238>] PVRSRV_BridgeDispatchKM+0xe0/0x338 [pvrsrvkm]
    [08:35:17014]    [<c054fc88>] drm_ioctl+0x1dc/0x38c
    [08:35:17014]    [<c02a020c>] sys_ioctl+0x11c/0xb80
    [08:35:17016]    [<c0100060>] ret_fast_syscall+0x0/0x54
    

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

    您好:  

    感谢您提供该用例。 我会在最后测试应用后再回来联系您  

    此致、

    Shriya