Skip to content

Performance Testing

mmcclaskey edited this page Sep 9, 2021 · 11 revisions

Overview

KasmVNC includes a built in benchmarking feature that performs the following isolated tests, single threaded:

  • Jpeg compression at quality 8 (64 runs)
  • Jpeg compression at quality 4 (64 runs)
  • Webp compression at quality 8 (8 runs)
  • Webp compression at quality 4 (16 runs)
  • Nearest scaling to 80% (64 runs)
  • Nearest scaling to 40% (64 runs)
  • Bilinear scaling to 80% (64 runs)
  • Bilinear scaling to 40% (64 runs)
  • Progressive bilinear scaling to 80% (64 runs)
  • Progressive bilinear scaling to 40% (64 runs)
  • Analysis (64 runs) (incl. memcpy overhead)
  • Analysis w/ scroll detection (64 runs) (incl. memcpy overhead)
  • Analysis w/ horizontal scroll detection (32 runs) (incl. memcpy overhead)

Purpose

The purpose of these tests is to provide highly isolated and repeatable benchmarks for functions that we intend to improve performance on over time. For example, we are working on vectorizing sections of code for AVX and SSE extensions and we want to have a high level of confidence in our testing and keep a historic trail of our improvements.

Running

All our testing is done on an AWS c5.large instance type running on Ubuntu 18.04 LTS.

ubuntu@hostname:~$ sudo apt-get update

ubuntu@hostname:~$ sudo dpkg -i kasmvncserver_bionic_*.deb

ubuntu@hostname:~$ sudo apt-get install -f

ubuntu@hostname:~$ /usr/bin/Xvnc -interface 0.0.0.0 -selfBench :1

Xvnc KasmVNC 0.9 - built Sep 3 2021 14:29:59 Copyright (C) 1999-2018 KasmVNC Team and many others (see README.me) See http://kasmweb.com for information on KasmVNC. Underlying X server release 12010000, The X.Org Foundation

vncext: VNC extension running! vncext: Listening for websocket connections on 0.0.0.0 interface(s), port 6800 SelfBench: Running micro-benchmarks (single-threaded, runs depending on task) SelfBench: Jpeg compression at quality 8 took 3095 ms (64 runs) SelfBench: Jpeg compression at quality 4 took 1325 ms (64 runs) SelfBench: Webp compression at quality 8 took 3474 ms (8 runs) SelfBench: Webp compression at quality 4 took 2410 ms (16 runs) SelfBench: Nearest scaling to 80% took 237 ms (64 runs) SelfBench: Nearest scaling to 40% took 59 ms (64 runs) SelfBench: Bilinear scaling to 80% took 1272 ms (64 runs) SelfBench: Bilinear scaling to 40% took 319 ms (64 runs) SelfBench: Progressive bilinear scaling to 80% took 1272 ms (64 runs) SelfBench: Progressive bilinear scaling to 40% took 818 ms (64 runs) SelfBench: Analysis took 235 ms (64 runs) (incl. memcpy overhead) SelfBench: Analysis w/ scroll detection took 646 ms (64 runs) (incl. memcpy overhead) SelfBench: Analysis w/ horizontal scroll detection took 2852 ms (32 runs) (incl. memcpy overhead)

Historical Progress

Clone this wiki locally