ci: Optimize virtio-gpu jobs execution

Since crosvm is not able to properly handle parallel tests due to a
concurrency bottleneck, it's necessary to ensuring scaling at the host
system level by increasing the number of active crosvm instances.

For dEQP testing this can be easily accomplished by using the Deqp
Suite support in deqp-runner and adding the crosvm wrapper script in
the related '*.toml' files.

For piglit this is currently not supported in piglit-runner, but
something similar could be added later. For the moment we use an
increased number of parallel jobs to speed-up the execution.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Acked-by: Daniel Stone <daniels@collabora.com>
macos/master
Cristian Ciocaltea 3 years ago
parent 89efc7600a
commit 336e01f0e1
  1. 13
      .gitlab-ci.yml
  2. 12
      .gitlab-ci/container/debian/x86_test.sh
  3. 20
      .gitlab-ci/expectations/virt/deqp-virgl-gl.toml
  4. 33
      .gitlab-ci/expectations/virt/deqp-virgl-gles.toml
  5. 13
      ci/.gitlab-ci.yml

@ -147,7 +147,7 @@ make check venus:
variables: variables:
GALLIUM_DRIVER: virgl GALLIUM_DRIVER: virgl
CROSVM_GALLIUM_DRIVER: llvmpipe CROSVM_GALLIUM_DRIVER: llvmpipe
GALLIVM_PERF: nopt GALLIVM_PERF: "nopt,no_quad_lod"
.deqp-host: .deqp-host:
extends: extends:
@ -167,16 +167,19 @@ make check venus:
extends: extends:
- .gl-virt-test - .gl-virt-test
variables: variables:
TEST_SCRIPT: "install/deqp-runner.sh" # There will be FDO_CI_CONCURRENT Crosvm processes, so each should use a single thread
LP_NUM_THREADS: 1
parallel: 3 parallel: 3
.piglit-virt: .piglit-virt:
extends: extends:
- .deqp-virt - .gl-virt-test
variables: variables:
<<: *piglit-host-variables <<: *piglit-host-variables
TEST_SCRIPT: "install/piglit/piglit-runner.sh" # Use all threads for rendering and only run one job at a time
parallel: 2 LP_NUM_THREADS: ${FDO_CI_CONCURRENT}
FORCE_FDO_CI_CONCURRENT: 1
parallel: 4
# Host runners (virpipe/vtest) # Host runners (virpipe/vtest)

@ -57,13 +57,15 @@ if [ "${GALLIUM_DRIVER}" = "virgl" ]; then
mkdir ${CI_PROJECT_DIR}/install mkdir ${CI_PROJECT_DIR}/install
mount --bind install ${CI_PROJECT_DIR}/install mount --bind install ${CI_PROJECT_DIR}/install
export LD_LIBRARY_PATH="${CI_PROJECT_DIR}/install/lib"
set +e set +e
# Use all threads for rendering and only run one job at a time if [ -z "${DEQP_SUITE}" ]; then
LP_NUM_THREADS=${FDO_CI_CONCURRENT} \ FDO_CI_CONCURRENT=${FORCE_FDO_CI_CONCURRENT:-FDO_CI_CONCURRENT} \
FDO_CI_CONCURRENT=1 \ install/crosvm-runner.sh install/piglit/piglit-runner.sh
LD_LIBRARY_PATH=${CI_PROJECT_DIR}/install/lib \ else
install/crosvm-runner.sh "${TEST_SCRIPT}" install/deqp-runner.sh
fi
RET=$? RET=$?

@ -1,51 +1,57 @@
[[deqp]] [[deqp]]
deqp = "/deqp/modules/gles2/deqp-gles2" deqp = "/install/crosvm-runner.sh"
caselists = ["/deqp/mustpass/gles2-master.txt"] caselists = ["/deqp/mustpass/gles2-master.txt"]
deqp_args = [ deqp_args = [
"/deqp/modules/gles2/deqp-gles2",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time
version_check = "GL ES 3.2.*git" version_check = "GL ES 3.2.*git"
renderer_check = "virgl" renderer_check = "virgl.*llvmpipe"
[[deqp]] [[deqp]]
deqp = "/deqp/modules/gles3/deqp-gles3" deqp = "/install/crosvm-runner.sh"
caselists = ["/deqp/mustpass/gles3-master.txt"] caselists = ["/deqp/mustpass/gles3-master.txt"]
deqp_args = [ deqp_args = [
"/deqp/modules/gles3/deqp-gles3",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 180.0 timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time
[[deqp]] [[deqp]]
deqp = "/deqp/modules/gles31/deqp-gles31" deqp = "/install/crosvm-runner.sh"
caselists = ["/deqp/mustpass/gles31-master.txt"] caselists = ["/deqp/mustpass/gles31-master.txt"]
deqp_args = [ deqp_args = [
"/deqp/modules/gles31/deqp-gles31",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 180.0 timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time
[[deqp]] [[deqp]]
deqp = "/deqp/external/openglcts/modules/glcts" deqp = "/install/crosvm-runner.sh"
caselists = [ caselists = [
"/deqp/mustpass/gl30-master.txt", "/deqp/mustpass/gl30-master.txt",
"/deqp/mustpass/gl31-master.txt", "/deqp/mustpass/gl31-master.txt",
"/deqp/mustpass/gl32-master.txt", "/deqp/mustpass/gl32-master.txt",
] ]
deqp_args = [ deqp_args = [
"/deqp/external/openglcts/modules/glcts",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time

@ -1,36 +1,57 @@
[[deqp]] [[deqp]]
deqp = "/deqp/modules/gles2/deqp-gles2" deqp = "/install/crosvm-runner.sh"
caselists = ["/deqp/mustpass/gles2-master.txt"] caselists = ["/deqp/mustpass/gles2-master.txt"]
deqp_args = [ deqp_args = [
"/deqp/modules/gles2/deqp-gles2",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time
version_check = "GL ES 3.2.*git" version_check = "GL ES 3.2.*git"
renderer_check = "virgl" renderer_check = "virgl.*llvmpipe"
[[deqp]] [[deqp]]
deqp = "/deqp/modules/gles3/deqp-gles3" deqp = "/install/crosvm-runner.sh"
caselists = ["/deqp/mustpass/gles3-master.txt"] caselists = ["/deqp/mustpass/gles3-master.txt"]
deqp_args = [ deqp_args = [
"/deqp/modules/gles3/deqp-gles3",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 180.0 timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time
[[deqp]] [[deqp]]
deqp = "/deqp/modules/gles31/deqp-gles31" deqp = "/install/crosvm-runner.sh"
caselists = ["/deqp/mustpass/gles31-master.txt"] caselists = ["/deqp/mustpass/gles31-master.txt"]
deqp_args = [ deqp_args = [
"/deqp/modules/gles31/deqp-gles31",
"--deqp-surface-width=256", "--deqp-surface-width=256",
"--deqp-surface-height=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden" "--deqp-visibility=hidden"
] ]
timeout = 180.0 timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time
[[deqp]]
deqp = "/install/crosvm-runner.sh"
caselists = [
"/deqp/mustpass/gl30-master.txt",
"/deqp/mustpass/gl31-master.txt",
"/deqp/mustpass/gl32-master.txt",
]
deqp_args = [
"/deqp/external/openglcts/modules/glcts",
"--deqp-surface-width=256",
"--deqp-surface-height=256",
"--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden"
]
timeout = 360.0 # Starting 8 Crosvm instances simultaneously can take some time

@ -159,7 +159,7 @@ make check venus:
variables: variables:
GALLIUM_DRIVER: virgl GALLIUM_DRIVER: virgl
CROSVM_GALLIUM_DRIVER: llvmpipe CROSVM_GALLIUM_DRIVER: llvmpipe
GALLIVM_PERF: nopt GALLIVM_PERF: "nopt,no_quad_lod"
.deqp-host: .deqp-host:
extends: extends:
@ -179,16 +179,19 @@ make check venus:
extends: extends:
- .gl-virt-test - .gl-virt-test
variables: variables:
TEST_SCRIPT: "install/deqp-runner.sh" # There will be FDO_CI_CONCURRENT Crosvm processes, so each should use a single thread
LP_NUM_THREADS: 1
parallel: 3 parallel: 3
.piglit-virt: .piglit-virt:
extends: extends:
- .deqp-virt - .gl-virt-test
variables: variables:
<<: *piglit-host-variables <<: *piglit-host-variables
TEST_SCRIPT: "install/piglit/piglit-runner.sh" # Use all threads for rendering and only run one job at a time
parallel: 2 LP_NUM_THREADS: ${FDO_CI_CONCURRENT}
FORCE_FDO_CI_CONCURRENT: 1
parallel: 4
# Host runners (virpipe/vtest) # Host runners (virpipe/vtest)

Loading…
Cancel
Save