You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by jo...@apache.org on 2022/09/29 22:03:24 UTC

[impala] branch master updated: Speed up default configuration for Docker-based tests

This is an automated email from the ASF dual-hosted git repository.

joemcdonnell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git


The following commit(s) were added to refs/heads/master by this push:
     new 68650057a Speed up default configuration for Docker-based tests
68650057a is described below

commit 68650057a163ac23e1ca85b7d9d8dbfd975a69ff
Author: Laszlo Gaal <la...@cloudera.com>
AuthorDate: Thu Sep 22 23:05:08 2022 +0200

    Speed up default configuration for Docker-based tests
    
    Docker-based parallelized test runs have proven themselves to be quite a
    bit faster than regular core or exhaustive mode builds. While regular
    sequential builds have also enjoyed shorter runtimes recently,
    Docker-based parallel builds still enjoy a speed advantage.
    
    Scheduling the parallel build segments is currently driven from the
    test driver script test-with-docker.py, and the order in which the
    segments are considered is currently hard-coded. The ordering was
    originally devised experimentally, by timing several test runs, then
    ordering the test segments based on expected duration, from longest
    to shortest.
    
    The average wall-clock run times for various test segments have changed
    since this original ordering was committed: FE tests have gotten
    significantly longer, while upgrading the default worker instance
    type cut shortened the serial phase(s) of E2E tests.
    
    This patch makes two changes to achieve a shorter overall run time for
    the Docker-based tests:
    1. Reorders the default scheduling order of the test segments, based
       on currently measured durations
    2. Increases the default suite concurrency for execution hosts:
       bumps suite concurrency from 4 to 5 for machines with memory sizes
       between 96 and 140 GBs (the currently used worker size)
    
    The latter change is also based on measurements: memory usage reports for
    total peak memory (RSS) and peak memory (RSS) per test segment both
    showed significant amounts of unused memory on the current default
    worker instance size (having 32 CPUs and 128 GB of RAM).
    Experiments showed that this machine size can reliable handle five
    concurrent containerized test sessions with some safety margin remaining,
    so the patch increases the default concurrency for this machine
    category.
    
    with both changes applied the duration of a core-mode test run with
    default settings is reduced from 2h45 to 2h25 (on average).
    
    Tested by running the Docker-based default test suite in core mode,
    with Ubuntu 16.04 and Rocky Linux 8.5 base images.
    
    Change-Id: Ifb609bcfb10e9f9b281cc6b375c36c9638db168b
    Reviewed-on: http://gerrit.cloudera.org:8080/19038
    Reviewed-by: Michael Smith <mi...@cloudera.com>
    Reviewed-by: Joe McDonnell <jo...@cloudera.com>
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
 docker/test-with-docker.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docker/test-with-docker.py b/docker/test-with-docker.py
index f01b4e5f1..47e505a7e 100755
--- a/docker/test-with-docker.py
+++ b/docker/test-with-docker.py
@@ -255,7 +255,7 @@ def _compute_defaults():
     memlimit_gb = 11
     parallel_test_concurrency = min(cpus, 12)
   elif total_memory_gb >= 95:
-    suite_concurrency = 4
+    suite_concurrency = 5
     memlimit_gb = 11
     parallel_test_concurrency = min(cpus, 12)
   elif total_memory_gb >= 65:
@@ -350,10 +350,10 @@ cluster_test_exhaustive = cluster_test.exhaustive()
 # Default supported suites. These are organized slowest-to-fastest, so that,
 # when parallelism is limited, the total time is least impacted.
 DEFAULT_SUITES = [
-    ee_test_serial,
-    ee_test_parallel,
     cluster_test,
     Suite("FE_TEST"),
+    ee_test_parallel,
+    ee_test_serial,
     Suite("BE_TEST"),
     Suite("JDBC_TEST")
 ]