Xpra: Ticket #1840: tune x264 threading

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


Sun, 13 May 2018 07:00:03 GMT - Antoine Martin: owner, description changed

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.

Mon, 21 May 2018 18:27:17 GMT - 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:

Tue, 29 May 2018 17:50:49 GMT - 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.

Tue, 27 Nov 2018 09:04:01 GMT - Antoine Martin:

See ticket:2064#comment:3

Thu, 03 Jan 2019 18:03:40 GMT - 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.

Thu, 03 Jan 2019 18:04:37 GMT - J. Max Mena: attachment set

H264 test output data organized by XPRA_X264_SLICED_THREADS value

Fri, 18 Jan 2019 11:32:43 GMT - 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.

Sat, 09 Feb 2019 03:42:13 GMT - Antoine Martin: owner changed

Thu, 01 Aug 2019 11:58:47 GMT - Smo: owner changed

Fri, 02 Aug 2019 15:22:09 GMT - Smo: attachment set

Fri, 02 Aug 2019 15:24:34 GMT - Smo: owner changed

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.

Sat, 03 Aug 2019 15:19:55 GMT - Antoine Martin: status changed; resolution set

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!

Sat, 23 Jan 2021 05:35:10 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1840