xpra icon
Bug tracker and wiki

Opened 16 months ago

Closed 3 weeks ago

#1840 closed enhancement (worksforme)

tune x264 threading

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 2.4
Component: encodings Version: 2.3.x
Keywords: Cc:

Description (last modified by Antoine Martin)

Somewhat related to #1839 since we now use vp8 / vp9 more than h264 in the python client.

References:

Attachments (2)

h264.zip (108.8 KB) - added by J. Max Mena 8 months ago.
H264 test output data organized by XPRA_X264_SLICED_THREADS value
testx264chart.tar.gz (121.3 KB) - added by Smo 3 weeks ago.

Download all attachments as: .zip

Change History (12)

comment:1 Changed 16 months ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to J. Max Mena

r19300 disables sliced threads when speed is below XPRA_X264_SLICED_THREADS (which defaults to 60).

@maxmylyn: please use the automated tests to see what impact this has on h264 encoding.
In particular, CPU load, latency, bandwidth, etc.
Because sliced based threading is so inefficient, you may want to sacrifice a little bit of latency to get better user density.

See also #1851 for vp8 / vp9.

Last edited 15 months ago by Antoine Martin (previous) (diff)

comment:2 Changed 15 months ago by J. Max Mena

Okay I will be investigating the automated test box this week. I have a few issues I have to tackle.

Still TODO:

  • Update the box from Fedora 26 -> Fedora 27 since 26 is EOL soon(already?)
  • Fix the virtual display resolution -> currently stuck on a super low res display (likely because it's plugged in to a VGA KVM switch)
  • Figure out why the IPTable rules aren't loading on boot -> No packet accounting

comment:3 Changed 15 months ago by J. Max Mena

Okay the box is updated to Fedora 28 (took much longer than it really should have). The packet accounting is also working again. However it's still not auto-loading the IPTables configuration - I'll have to give yet another different method of loading the IPTables config a try.

I'm going to write a quick bash script to check the H264 performance and also the VPX performance for #1851 and run that in the background today.

I'm also going to write a Python (it occurs to me I could write a Bash script, too) helper file that should make these one-off test runs easier to run. As is I have to write a custom Bash script and run it via nohup since the test box is about a 45 minute drive away and the VPN connection is unstable at best.

comment:4 Changed 9 months ago by Antoine Martin

comment:5 Changed 8 months ago by J. Max Mena

My mathematician is unavailable for a week or so, so I'm going to post the output I've got so far. No charts or anything, just the raw CSVs and logs.

Changed 8 months ago by J. Max Mena

Attachment: h264.zip added

H264 test output data organized by XPRA_X264_SLICED_THREADS value

comment:6 Changed 7 months ago by Antoine Martin

Most of the data is missing from those data files (batch delay, quality, etc), so there is no way of knowing if sliced threads were actually used or not. (that's probably something caused by the xpra info changes in 2.5 - the tests code will need updating if that's the case)

Testing with XPRA_X264_SLICED_THREADS=60 does not do anything since that's the default value. Use 1 to always enable, and 100 to disable.

Also, we want to test the changes in the x264 video encoding settings, so there's not much point in testing "xterm" or "gtkperf" as those aren't meant to trigger any video at all. The only thing these could be useful for would be to see the variance between test runs, but you might as well get that from multiple runs with video.

comment:7 Changed 7 months ago by Antoine Martin

Owner: changed from J. Max Mena to Jonathan Anthony

comment:8 Changed 3 weeks ago by Smo

Owner: changed from Jonathan Anthony to Smo

Changed 3 weeks ago by Smo

Attachment: testx264chart.tar.gz added

comment:9 Changed 3 weeks ago by Smo

Owner: changed from Smo to Antoine Martin

Attached some generated charts with XPRA_X264_SLICED_THREADS set to 1 and 100.

All the csv from the 2 reps and logs are there if you like in the archive.

The cpu changes don't look that huge to me but take a look for yourself.

comment:10 Changed 3 weeks ago by Antoine Martin

Resolution: worksforme
Status: newclosed

Most metrics look better when sliced threads are enabled more aggressively (XPRA_X264_SLICED_THREADS=1): the batch delay is lower, pixels sent and regions/s higher.
Even the slightly greater bandwidth usage can be explained by the higher framerate.
But since there's not much difference, let's just leave the default value as it is.
Closing at last!

Note: See TracTickets for help on using tickets.