Page 2 of 2 FirstFirst 12
Results 11 to 19 of 19

Thread: New GPU vs. new CPU

  1. #11
    Join Date
    Mar 2011
    Posts
    381

    Default

    Peter, I looked on Reddit for some help on my hardware roadmap and someone with a lot more knowledge on video encoding mentioned that libvpx has been updated to support 8 threads instead of just 4 when encoding to VP9. Is this something that can be updated by getting a newer version of FFMPEG?

    Link to thread:
    https://www.reddit.com/r/Amd/comment...nking_3600_or/

  2. #12
    Join Date
    Sep 2009
    Posts
    2,168

    Default

    Yes getting a newer version of ffmpeg could help but this may also break transcoding in Mezzmo if the commandline parameters to ffmpeg have changed. You can get a newer ffmpeg version from https://ffmpeg.zeranoe.com/builds/ and then change the path in Transcoding settings to the path to the new ffmpeg to see if it works.

    Mezzmo Android: Install it on your tablet, smartphone, Android TV or Amazon Fire to browse and stream files from your Mezzmo library to all your devices. Full details at http://www.conceiva.com/products/mez...mo_android.asp
    Mezzmo for Kodi Add-on: Install it into Kodi to stream files from your Mezzmo library directly in Kodi. Full details at http://www.mezzmo.com/wiki/doku.php?...odi_user_guide
    Mezzmo for Roku App: Install it onto your Roku to stream files from your Mezzmo library. Full details at http://www.mezzmo.com/wiki/doku.php?...oku_user_guide
    Wiki: User Guides & Reference Manual at http://www.mezzmo.com/wiki
    Facebook: http://www.facebook.com/Mezzmo.DLNA.Server
    Twitter: https://twitter.com/conceiva_mezzmo
    Web: http://www.mezzmo.com

  3. #13
    Join Date
    Jun 2012
    Posts
    394

    Default

    I've completed a couple of my AMD hardware upgrades to Ryzen 3000 CPUs. Here's some comparisons using FFMPEG doing 24 mbps H264 encoding.


    27 fps - AMD FX-8350 1080P H.264
    48 fps - Intel i7-4790k 1080P H.264
    123 fps - Ryzen 3800X 1080P H.264
    354 fps - Intel i7-4790K 1080P H.264 w/Nvidia 970 GPU
    Last edited by jbinkley60; 12-06-2019 at 05:56 AM.

  4. #14
    Join Date
    Jun 2012
    Posts
    394

    Default

    I've done one more upgrade, my video card from a GTX 970 to a GTX 2070 Super card. Here's the updated results:

    27 fps - AMD FX-8350 1080P H.264
    48 fps - Intel i7-4790k 1080P H.264
    123 fps - Ryzen 3800X 1080P H.264
    354 fps - Intel i7-4790K 1080P H.264 w/Nvidia 970 GPU
    535 fps - Intel i7-4790K 1080P H.264 w/Nvidia 2070 Super GPU

    The bottleneck becomes how fast the GPU can decode the source file. The decode process is running the GPU at 100%. The source is a Blu-Ray ISO. If I move down to DVDs I can get fps rates over 1300fps.

  5. #15
    Join Date
    Jun 2012
    Posts
    394

    Default

    I've completed a hardware upgrade of my main Mezzmo server to a Ryzen 3700X CPU and completed some additional software only transcoding testing using the new hardware. The results can be found at:

    Transcoding test results

    I've decided that the software only results are good enough that I am not putting an nVidia card back in the server. One odd thing I noticed was that the VP8 results had low CPU utilization due to ffmpeg only leveraging one core on the CPU. I checked the FFmpegAdditional.xml file and the VP8 line is:

    <ffmpegadditional id="vpx+encoding">-threads 4 -cpu-used 4 -crf 22 -qmin 10 -qmax 42</ffmpegadditional>

    which I think should leverage 4 threads instead of 1. I'll need to research this further and if I can get ffmpeg to leverage more threads for VP8 I will republish the results.
    Last edited by jbinkley60; 01-07-2020 at 06:36 AM.

  6. #16
    Join Date
    Mar 2011
    Posts
    381

    Default

    Quote Originally Posted by jbinkley60 View Post
    I've complete a hardware upgrade of my main Mezzmo server to a Ryzen 3700X CPU and completed some additional software only transcoding testing using the new hardware. The results can be found at:

    Transcoding test results

    I've decided that the software only results are good enough that I am not putting an nVidia card back in the server. One odd thing I noticed was that the VP8 results had low CPU utilization due to ffmpeg only leveraging one core on the CPU. I checked the FFmpegAdditional.xml file and the VP8 line is:

    <ffmpegadditional id="vpx+encoding">-threads 4 -cpu-used 4 -crf 22 -qmin 10 -qmax 42</ffmpegadditional>

    which I think should leverage 4 threads instead of 1. I'll need to research this further and if I can get ffmpeg to leverage more threads for VP8 I will republish the results.
    Yep, you are getting the same thing with VP8 that I am getting. I am not an encoding genius but I would be really interested in any way to get the thread count up.

  7. #17
    Join Date
    Jun 2012
    Posts
    394

    Default

    I'll let Peter or Paul weigh in here. I had worked with Peter before on this and adjusting the threads and CPU parameters in the vpx encoding line worked previously on my FX-8350 CPU. If you want to try it yourself find the FFmpegAdditional.xml file located in your device profiles directory.

    The default line is: <ffmpegadditional id="vpx+encoding">-threads 4 -cpu-used 4 -crf 22 -qmin 10 -qmax 42</ffmpegadditional>

    I had changed mine to: <ffmpegadditional id="vpx+encoding">-threads 4 -cpu-used 8 -crf 22 -qmin 10 -qmax 42</ffmpegadditional>

    and was seeing higher CPU utilization and VP8 encoding rates. It doesn't seem to be working with my new Ryzen CPU. One interesting thing is that the ASUS motherboards I am using have CPU virtualization disabled by default. I don't think ffmpeg leverages CPU virtualization. This may have something to do with the version of ffmpeg in Mezzmo vs. how new the Ryzen Zen 2 based CPUs are. For me I can watch the videos fine (i.e. transcoding fps rate is high enough) but I would like to see better CPU utilization, like I did with my FX-8350.

    Update:

    I enabled CPU virtualization for my Ryzen 3700X and no difference in VP8 encoding using more threads. I didn't expect it would but wanted to rule that out.
    Last edited by jbinkley60; 01-06-2020 at 08:44 AM.

  8. #18
    Join Date
    Mar 2011
    Posts
    381

    Default

    Quote Originally Posted by jbinkley60 View Post
    I'll let Peter or Paul weigh in here. I had worked with Peter before on this and adjusting the threads and CPU parameters in the vpx encoding line worked previously on my FX-8350 CPU. If you want to try it yourself find the FFmpegAdditional.xml file located in your device profiles directory.

    The default line is: <ffmpegadditional id="vpx+encoding">-threads 4 -cpu-used 4 -crf 22 -qmin 10 -qmax 42</ffmpegadditional>

    I had changed mine to: <ffmpegadditional id="vpx+encoding">-threads 4 -cpu-used 8 -crf 22 -qmin 10 -qmax 42</ffmpegadditional>

    and was seeing higher CPU utilization and VP8 encoding rates. It doesn't seem to be working with my new Ryzen CPU. One interesting thing is that the ASUS motherboards I am using have CPU virtualization disabled by default. I don't think ffmpeg leverages CPU virtualization. This may have something to do with the version of ffmpeg in Mezzmo vs. how new the Ryzen Zen 2 based CPUs are. For me I can watch the videos fine (i.e. transcoding fps rate is high enough) but I would like to see better CPU utilization, like I did with my FX-8350.

    Update:

    I enabled CPU virtualization for my Ryzen 3700X and no difference in VP8 encoding using more threads. I didn't expect it would but wanted to rule that out.
    Dissappointing, since my new system is based on a Ryzen 3500x. I'm still gonna try it, though. Thanks for the tips.

  9. #19
    Join Date
    Sep 2009
    Posts
    2,168

    Default

    Looks like encoding is limited by libvpx based upon the resolution (from https://stackoverflow.com/questions/...to-4-threads):
    Libvpx uses tile threading, which means you can at most have as many threads as the number of tiles. The -tile-columns option is in log2 format (so -tile-columns 6 means 64 tiles), but is also limited by the framesize. The exact details are here, it basically means that max_tiles = max(1, exp2(floor(log2(sb_cols)) - 2)), where sb_cols = ceil(width / 64.0). You can write a small script to calculate the number of tiles for a given horizontal resolution:

    Width: 320 (sb_cols: 5), min tiles: 1, max tiles: 1
    Width: 640 (sb_cols: 10), min tiles: 1, max tiles: 2
    Width: 1280 (sb_cols: 20), min tiles: 1, max tiles: 4
    Width: 1920 (sb_cols: 30), min tiles: 1, max tiles: 4
    Width: 3840 (sb_cols: 60), min tiles: 1, max tiles: 8
    So even for 1080p (1920 horizontal pixels), you only get 4 tiles max, so 4 threads max, i.e. a bitstream limitation. To get 8 tiles, you need at least a width of 1985 pixels (2048-64+1, which gives sb_cols=32). To get more threads than the max. number of tiles at a given resolution, you need frame-level multithreading, which libvpx doesn't implement. Other encoders, like x265/x264, do implement this.

    [edit] as some people in comments and below have already commented, more recent versions of libvpx support -row-mt 1 to enable tile row multi-threading. This can increase the number of tiles by up to 4x in VP9 (since the max number of tile rows is 4, regardless of video height). To enable this, use -tile-rows N where N is the number of tile rows in log2 units (so -tile-rows 1 means 2 tile rows and -tile-rows 2 means 4 tile rows). The total number of active threads will then be equal to $tile_rows * $tile_columns.
    It appears that 16 threads is the maximum and this uses 4 cores https://askubuntu.com/questions/6912...ith-vp9-ffmpeg

    Mezzmo Android: Install it on your tablet, smartphone, Android TV or Amazon Fire to browse and stream files from your Mezzmo library to all your devices. Full details at http://www.conceiva.com/products/mez...mo_android.asp
    Mezzmo for Kodi Add-on: Install it into Kodi to stream files from your Mezzmo library directly in Kodi. Full details at http://www.mezzmo.com/wiki/doku.php?...odi_user_guide
    Mezzmo for Roku App: Install it onto your Roku to stream files from your Mezzmo library. Full details at http://www.mezzmo.com/wiki/doku.php?...oku_user_guide
    Wiki: User Guides & Reference Manual at http://www.mezzmo.com/wiki
    Facebook: http://www.facebook.com/Mezzmo.DLNA.Server
    Twitter: https://twitter.com/conceiva_mezzmo
    Web: http://www.mezzmo.com

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •