设置如下:Winform应用程序Visual Studio 2019创建了16个Videoview/MediaPlayer示例,每个示例从多播摄像机中流式传输960 X 540 30 fps摄像机流。
CPU i7 2.67GHz,GPU NV GTX 1650。
GPU加载了高达44%的解码和大约相同的3D。应用程序使用了惊人的75至90%的CPU。它跳了很多从一个测试运行到另一个。GPU是非常稳定的。
这里有一些其他的信息是有趣的。如果我运行这个应用程序的一个单一的副本与一个视频流的CPU使用约5/10%的CPU。如果我运行16个应用程序的示例每个示例使用约4/10至8/10%的CPU。一旦我有16个视频流的GPU是相同的以上(44%)CPU是名义上的。
在添加摄像头时,一个示例内CPU使用率的增加不是线性的,在9之后会有很大的跳跃。从下面的诊断图像中,您可以看到使用率几乎完全隔离在本地代码中。其他图表显示,内核中约有2/3,系统IO中约有1/3。CPU相当均匀地分布在所有内核中。
code on gist
我已经尝试了很多变化,但无论我尝试什么,CPU使用是相当稳定的,一旦我得到了16个通道。我已经尝试运行每个示例在自己的线程。这没有什么区别。我真的很想了解这一点,并找到一种方法来减少CPU使用。我有一个应用程序使用这种技术和一个客户,需要更多的通道比16。
1条答案
按热度按时间wgeznvg71#
这可能是一个bug,需要在www.example.com上报告trac.videolan.org并为VLC开发人员提供一个最小的C/C++重现示例。
请注意,比较16个VLC应用程序示例(16个进程)播放和1个基于LibVLC的应用程序示例播放16个流(1个进程)并不完全是一个公平的比较。
perf的使用仍然应该是线性的,而不是指数的,虽然,所以可能有一个bug。