I'm using MSS 2017R3 on a Skylake CPU and MSS 2016 on a Haswell CPU with FFmpeg to transcode streams from MPEG2 to H264.
When I check the GPU load with the metrics_monitor tool they show different usage patterns. On Haswell, both Render usage and Video usage are equally loaded. However on Skylake, Render usage is more loaded than Video usage.
Is there any explanation for this?
Hi Mr. Anderson,
This depends on a lot of factors, to simplify the testing, could you try the same transcoding with our sample code "sample_multi_transcode"?
If you download the sample package from the following page:
You can find the built binary with the test streams, then you could do:
./sample_multi_transcode -i::mpeg2 <input file> -o::h264 <output file>
Change of the GPU usage pattern is expected between last release of MSS 2016 product line and MSS 2017 R1. The reason of the difference is introduction of i915 kernel mode driver scheduler which tracks inter-task dependencies and is capable to schedule tasks with resolved dependencies out of FIFO order (MSS 2016 worked in FIFO mode). This permits to significantly improve performance in case of big number of inter-dependent tasks (for example, non-FEI encoding operation submits 2 dependent tasks, one on RENDER, another on VIDEO code engine). As a side effect you observe change in the GPU usage pattern. On MSS 2016 engines were subject to be occupied by the task in the wait for dependencies resolution state. On MSS 2017 they are not and they really can execute something else improving parallelism.
So, behavior which you observe is normal, at least based on the currently provided description. Do you experience any associated performance issues comparing HSW with SKL?