TestBot News

Francois Gouget fgouget at codeweavers.com
Wed May 4 09:11:21 CDT 2022


On Thu, 28 Apr 2022, Zhiyi Zhang wrote:
[...]
> Could you make them go faster? Maybe balancing the load a bit or 
> adding more hardware?

The issue is that WineTest takes time and new jobs have to wait for 
running tasks to complete to get their turn. But then they have priority 
over WineTest.

I collected some data about the WineTest tasks (see attached 
spreadsheet) and they take between 25 minutes on Windows and 35 minutes 
on Linux. The main issue here is VMs that have many test configurations 
which must therefore be run sequentially. The three VMs with the longest 
chains are:

  Time  Configs VM
  6.7 h    11   debian11
  6.7 h    16   w1064
  6.8 h    15   w10pro64

What this means is that no amount of rebalancing can get the tests to 
run in less than about 7 hours.

And here are the results at the VM host level:

Time    Configs Host
  7.2 h    12   vm1
  1.4 h     3   vm2
  7.7 h    18   vm3
 12.1 h    25   vm4

The issue is vm2 is too slow and old to run most VMs nowadays. So moving 
some test configurations from vm4 to vm1 or vm3 will push those to 9 / 
10 hours. So I'll restart the process of getting new hardware to replace 
vm2.

The other options:
* Fix the tests that get stuck: they waste 2 minutes each.
  But it looks like there's only two of those left, conhost.exe:tty and 
  wscript.exe:run, so there's not much to gain.

* Speed up the slow tests, potentially by using multi-threading. What 
  sucks is we have no way of tracking which tests are slow, which test 
  configurations are slow, etc. It would be nice to have something like 
  the patterns page but for runtime (and also for the tests output 
  size).

* Getting hardware with faster single thread performance: over 90% of 
  the tests are single-threaded. vm2 is meant to be the first step 
  towards this.

* Splitting the VMs with many test configurations so the test load can 
  be spread across multiple hosts. That is, instead of having a single 
  VM with 15 test configurations that must run sequentially like 
  w10pro64, have two VMs with 7 and 8 configurations each that can run 
  in parallel. But that makes an extra VM to manage and requires having 
  hosts to spread them to :-(

* Load balancing could help, assuming the TestBot is smart enough.

  That is, if it starts by running the debiant and w7u tasks on vm4, 
  then by the time the other hosts are idle all that's left to run is 
  w10pro64's 15 test configurations that must be run sequentially 
  anyway. So the scheduler must give priority to the VMs with the 
  highest count of pending tasks.

  Load balancing could help reduce the latency by ensuring the builds 
  are done earlier. Here's a worst case scenario right now:
    t=0  vm2 starts a WineTest job
    t=1  Developper submits a job. First comes the build step
    t=25 vm2 completes the WineTest job
    t=25 vm1, vm3 and vm4 each start a new WineTest job
    t=26 vm2 completes the developer's build task
    t=50 vm1, vm3 and vm4 complete their WineTest task
    t=51 vm1, vm3 and vm4 starts the developer's Windows tasks
  Having multiple build VMs would make it more likely that the blocking 
  build step is completed before any other WineTest task.
  This is also why it's good that vm2 is not too busy.

* Reducing the number of test configurations :-(


-- 
Francois Gouget <fgouget at codeweavers.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: WineTest.xls
Type: application/vnd.ms-excel
Size: 20992 bytes
Desc: WineTest.xls
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20220504/9f2c311e/attachment-0001.xls>


More information about the wine-devel mailing list