support/scripts/pkg-stats: retrieve packages latest version using processes
authorVictor Huesca <victor.huesca@bootlin.com>
Thu, 1 Aug 2019 15:12:44 +0000 (17:12 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Thu, 1 Aug 2019 16:04:09 +0000 (18:04 +0200)
commit294fc3218c2e296ddfe905d795e3b99e4c0cc8f1
treeb75d07d807c98ab8081557169d6dedf5c3c819ac
parent3938afe1b5f43a6ea915916cc2201adde13b4e39
support/scripts/pkg-stats: retrieve packages latest version using processes

The major bottleneck in pkg-stats is the time spent waiting for
answers from remote servers. Two functions involve such communication
with remote servers:

- 'check_package_urls' which checks that each package upstream website
  is up, it is efficient due to the use of process-pools thanks to
  Matt Weber.

- 'check_package_latest_version' which fetches the latest package
  version from release-monitoring, it uses a http-pool but runs
  sequentially.

This patch extends the use of process-pools to 'check_latest_version'.
Due to some limitations of multiprocess callbacks, this patch loses
the overall progress of packages in favour of just the current package
name.

Runtimes for this function are ~3m vs ~25m for the linear version.
Tested on an i7 7500U (2/4 cores/threads @3.5GHz) with 15ms ping.

Note: There have already been work trying to parallelize this function
using threads but there were a failure on some configurations [1].
This implementation rely on a dedicated module already in use on this
script, so it's unlikely to see failure with this version.

[1] http://lists.busybox.net/pipermail/buildroot/2018-March/215368.html

Signed-off-by: Victor Huesca <victor.huesca@bootlin.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
support/scripts/pkg-stats