
Shidhartha Das
Arm
GeST: An Automatic Framework For Generating
CPU Stress-Tests
Abstract—This work presents GeST (Generator for Stress-Tests): a
framework for
CPU stress-tests. The
framework is based on genetic algorithm search and can be used to
maximize different target CPU metrics such as power, temperature,
instructions executed per cycle and dI/dt voltage noise. We
demonstrate the generality and effectiveness of the framework by
generating various workloads that stress the CPU power, thermal
and voltage margins more than both
and
manually written stress-tests. The key framework strengths are its
extensibility and flexibility. The user can specify custom
measurement and fitness functions as well as the CPU instructions
that will be used in the genetic algorithm search. The paper
demonstrates the framework prowess by using it with simple and
complex fitness functions to generate stress-tests: a) for various
types ranging from low-power mobile ARM CPUs to high-
power x86 CPUs and b) with different measurement instruments
such as oscilloscopes and software accessible performance counters
and sensors.
Keywords: tool, framework, stress-test, virus, power, temperature,
dI/dt, genetic algorithms
I. INTRODUCTION
Stress
tests that maximize micro-architectural activity, heat-
dissipation, power-consumption and voltage-noise are useful for
numerous reasons that include among other: a) benchmarking,
b) testing system stability, c) margining production systems, d)
detecting performance bottlenecks or weaknesses in the CPU
power delivery network (PDN), and e) testing the efficacy of
energy-efficiency techniques such as voltage-noise mitigation
mechanisms [1][2][3][4][5][6][13]. Manually crafting such
stress-tests is a time consuming and tedious procedure.
Consequently, previous work has proposed automated
frameworks for generating stress-
[1][2][3][4][5][6][7][8].
The basis of most of these approaches is genetic algorithm
search (GA) [9].
Despite the previous work on GA based stress-test
generation frameworks, to the best of our knowledge, there is no
publicly available tool for researchers and practitioners for
automatic stress-test generation. This work presents GeST
(Generator for Stress-Tests): a GA based framework that
researchers and designers can use for automatic stress-test
generation. GeST has already been used for industrial purposes
and in several research publications [22][23][24][25].
GeST, given a user-specified set of assembly instructions
and operands, attempts to find the instruction mix, order and
operands that maximize a target metric. GeST is extensible as it
offers an easy interface to build upon. A user
define the
instructions, which the optimization search uses, by only
changing input configuration parameters. This renders the
framework compatible with any ISA. Moreover, an
experimenter can script custom measurement procedures and
custom fitness functions (the function that drives the GA
optimiz
in a plug-and-play fashion using the template
measurement and fitness software classes provided in the
framework. The user defined measurement scripts and fitness
functions are easy to integrate in the framework by simply
changing the configuration parameters without performing any
change in the framework’s core source code. We demonstrate
the power of the framework’s extensibility and flexibility by: a)
generating stress-tests that maximize different target metrics
such as power, temperature, and dI/dt voltage-noise, b) using the
framework with various measurement procedures and
optimization metrics such as software accessible counters (e.g.
performance counters) and external instruments (such as
oscilloscopes), c) generating stress-tests on mobile ARM and
server-grade ARM and x86 CPUs, d) generating stress-tests on
bare-metal and OS execution environments, and e) using both
simple as well as complex multi-objective fitness functions.
The rest of the paper is organized as follows: Section II
provides background discussion on stress-tests
III
presents GeST, Section IV discusses the experimental setup,
Section V demonstrates the capability of GeST to generate
stress-tests that maximize power consumption, temperature and
IPC. In Section VI, we highlight the framework’s capability to
generate dI/dt voltage noise stress-tests.
VII discusses
previously proposed GA frameworks. Finally, we present
concluding remarks in Section VIII.
II. B
ACKGROUND ON STRESS-TESTS
For the purposes of this discussion, we classify stress-tests
into three categories: a) stress-
tests that maximize specific
micro-architectural (uArch) metrics, such as memory
bandwidth, IPC and cache-misses, b) stress-tests that maximize
power consumption and temperature, commonly referred to as
“power-viruses”, and c) stress-tests that maximize voltage noise,
also known as “voltage-
“dI/dt-viruses”. This
work shows that GeST can successfully generate stress-tests for
all three categories. In particular, we use the framework to
generate stress-tests that maximize CPU IPC, power,
temperature and dI/dt voltage-noise. While this work focuses on
the CPU there is nothing fundamental that prevents using GeST
for other
components as well, for instance the last
level cache (LLC) or an integrated accelerator. A brief
discussion on each of the three stress-tests categories follows.
Zacharias Hadjilambrou
University of Cyprus
zhadji01@cs.ucy.ac.cy
Paul N Whatmough
Arm / Harvard University
Paul.whatmough@arm.com
Arm
Yiannakis Sazeides
University of Cyprus
yanos@cs.ucy.ac.cy
1
2019 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS)
978-1-7281-0746-2/19/$31.00 ©2019 IEEE
DOI 10.1109/ISPASS.2019.00009