"Transformations from software models to quality models:
mechanisms, approaches, technologies, tools"
Vittorio Cortellessa, Antinisca di Marco and Luca Berardinelli
Software quality is intended as a multi-attribute composed
by performance, reliability, etc. It is widely recognized that
in order to make quality validation an integrated activity
along the software lifecycle the support of automation is
crucial. Easiness to annotate software models with extra-
functional parameters (e.g. the operational profile) and automated translations of the annotated models into "ready-
to-validate" models are the key challenges in this direction.
Several methodologies have been introduced in the last few
years to address these challenges. The tutorial introduces
the attendance to the main approaches and technologies for
annotating and transforming software models into models
suited to validate software quality.
The tutorial roadmap is
as follows: (i) we introduce the topic of quality validation
of software systems; (ii) we describe the main mechanisms
and approaches to annotate and transform models; (iii) we
introduce the most recent technologies of support to this
goal and on which the existing tools are based; (iv) then
we present some of the tools that have been recently built
on top of these technologies; (v) we classify the tranformation methodologies basing on diferent dimensions and parameters; (vi) finally, we give some ideas about the future
directions in this research area.
"Software Performance and Power Management in Large Scale Servers"
Daniel Mosse and Alexandre Ferreira
Today to be green is in fashion but for computer scientists and
professionals it is has become a necessity. Newer designs do not only
aim to have higher performance or lower cost, but also have lower
energy consumption and better thermal characteristics. These two last
characteristics have gained importance and today may even determine
the success of a design. In almost all existing systems, power and
temperature are critical, from embedded systems to very large
clusters. Examples go from cellular phones that consume the battery
too fast, to laptop computers
that are too hot to use comfortably, to large clusters that require
huge amounts of cooling and megawatts of power.
Almost all current CPUs have power and thermal management mechanisms
allowing systems to reduce energy consumption with low performance
impact. Throttling and dynamic voltage caling are well-studied and
common solutions to reduce power. These mechanisms are also used to
protect CPUs from excess temperature, by applying them whenever a
temperature threshold is achieved. More recently, it has been
recognized that other components in a computer system (e.g., memory,
disks, high end graphics cards, networking elements) should also be
studied with respect to power and thermal problems.
Most power management mechanisms imply performance loss so they should
be used judiciously. Some are easy to control (e.g., CPU frequency)
and are not visible to the software layers but others are not (e.g.,
CPU throttling). Therefore, we see that the hardware provides the
means, but software running on that hardware has provide the
intelligence of when and how to use the mechanisms to have as little
performance impact as possible, but as large energy savings as
possible. Some systems are even designed with restrictions that all
components cannot be used at capacity simultaneously (to avoid extreme
power consumption), making resource allocation fundamental. An
examples is when memory and CPU share a power budget.
Software algorithms to optimize energy consumption have been developed
and used in many applications. Some of these algorithms use the DVS
mechanisms based on measured system performance; for example, the
Linux on demand controls frequency and voltage settings based on the
load measured in the CPU. However, the more effective and more recent
algorithms use application behavior knowledge to make good decisions
towards power savings. Applications can themselves provide either
hints or directly request specific perfomance/power compromises to
obtain the best operating point. An application that has memory
intensive and CPU intensive portions can request power to be diverted
from CPU to memory and vice-versa to reduce power
without or even getting performance gain.
This tutorial has the objective to show why power, energy, and
temperature are also important components of high-performance systems,
and how they can be managed as first-class resources.
During the 3-hour tutorial, we will first present an overview of the
primary hardware mechanisms available in a variety of systems. Then we
will describe the most common algorithms that are currently being
applied to manage these mechanisms. Then, we will look at future
trends of power/energy/temperature management, and the benefits that
new management schemes will bring to a variety of systems and
applications. Examples range from embedded devices to large clusters.