Series |
Type |
Lecture |
Description |
Lecturer |
|
|
|
|
|
Computer Architecture and Performance
Tuning
|
Lectures |
Lecture 1 |
Understanding scalable hardware
The first part of this double lecture describes the hardware
architecture of a modern PC server with processors based on
the Intel Core micro-architecture. Other processor
architectures will also be mentioned. Acceleration
opportunities (but also bottlenecks) in the architecture
will be covered in detail, not just inside the processor,
but also related to the memory hierarchy. The aim is to give
each student a good understanding of what resources are
available from a hardware viewpoint.
|
Sverre Jarp |
Lecture 2 |
Software
that scales with the hardware
In
the second part of this double lecture we will discuss
several strategies which can allow software to scale to the
maximum resource potential in a given architecture. These
strategies are based on both data and task parallelism. We
will also mention the issue of “performance portability”
across platforms. Several important factors related to
programming styles and compiler invocation (flags, etc.)
will be reviewed. To back up everything with evidence,
several scalable examples from physics will be portrayed.
|
Sverre Jarp |
Lecture 3 |
Understanding performance tuning
Performance tuning is an important step in application
development. Modern processor architectures often give us
the benefit of being able to look inside the application at
very low levels, however drawing high-level conclusions is
not always straightforward. The objective of this lecture is
to familiarize the attendees with the topic of performance
optimization and with certain common metrics which can be
used to define application efficiency. In addition, we will
demonstrate how to use language independent performance
tools in Linux, in order to obtain information about program
characteristics and bottlenecks.
|
Andrzej Nowak |
Exercises |
Exercise 1 Exercise 2 Exercise 3 |
The aim of the exercises in this series is to give the
attendees a practical introduction to performance monitoring
on Linux. Advanced tools will be used during the course,
enabling the participants to discover how the structure of
the code influences its performance. The participants will
also be given the task of correlating performance figures
with certain programming decisions. In addition, the
participants will understand the limits of performance
tuning and the ways to establish at which point inside those
limits their workload is placed. The exercises will be
supported by demonstrating real world problems in production
environments, including multi-threaded examples.
|
Sverre Jarp
Andrzej
Nowak |
Prerequisite
Knowledge
|
Desirable prerequisite
and references to further
information |
-
Basics of modern computer architecture
-
Basic knowledge about compilers
-
Familiarity with Linux and the C/C++ programming
languages
|
|
|
|
|
|
|
Networking QoS and Performance
|
Lectures |
Lecture 1 |
Internet
QoS options
Improving Quality of Service guarantees and performances in
data network is a key requirement of Grid computing. Indeed,
fast transfers require high-bit rate connections, and grid
operation requires network predictability and high
availability. On the other hand, the Internet historical
technology is not naturally best suited to deterministic
behaviour. This lecture explains the technical challenges and
the range of options available to improve QoS guarantees in
Internet-based networks.
|
François Fluckiger |
Lecture 2 |
Multimedia
over the Internet
The Grid is not only a network of computer resources but
also a network of people cooperating to use these resources.
Part of the collaborative tools scientists are increasingly
using include audio and video systems. They place new
challenging requirements on the networking systems. The
class discusses these requirements and their consequences on
the end-systems as well as within the underlying network.
|
François Fluckiger |
Prerequisite Knowledge
|
Mandatory
prerequisite |
For this series of
lectures, there is no mandatory pre-requisite knowledge, as
long as the participants are professional computer
scientists. |
|
Desirable prerequisite
and
references to further
information
|
The participants will draw
maximum benefits from the lectures if they have a fair
knowledge of computer network principles, in particular the
concepts of
-
Networking layering
-
Internet transport
infrastructure (e.g. mesh topology, routers, links)
-
Internet layers (e.g.
differences between PPP, IP, UDP, TCP)
|
|
Books
-
Computer Networks, Ed. 4
Andrew Tannenbaum, Prentice Hall, ISBN
0-130-661023
-
Internetworking with TCP/IP, vol 1
Douglas E. Commer, Prentice Hall, ISBN
0-130-183806
-
Understanding Networked
Multimedia
Francois Fluckiger, Prentice Hall, ISBN
0-131-90992-4
Vikipedia
Computer Networking (http://en.wikipedia.org/wiki/Computer_networks)
Other Links
Linux-Networking Concepts |
|
|
|
|
|
|
Creating
secure software
|
Lectures
|
Lecture 1 |
Introduction
to computer security
First
lecture starts with a definition of computer security and an
explanation of why it is so difficult to achieve. The
lecture highlights the importance of proper threat modelling
and risk assessment. It then presents three complementary
methods of mitigating threats: protection, detection,
reaction; and tries to prove that security through obscurity
is not a good choice.
|
Sebastian Lopienski |
Lecture 2 |
Security
in different phases of software development
The second
lecture addresses the following question: how to create
secure software? It introduces the main security principles
(like least-privilege, or defense-in-depth) and discusses
security in different phases of the software development
cycle. The emphasis is put on the implementation part: most
common pitfalls and security bugs are listed, followed by
advice on best practice for security development.
|
Sebastian Lopienski |
Exercises |
Exercise 1
Exercise 2
Exercise 3 |
Avoiding,
detecting and removing software security vulnerabilities
In
the practice session, a range of typical security
vulnerabilities will be presented. The goal is to learn how
they can be exploited (for privilege escalation, data
confidentiality compromise etc.), how to correct them, and
how to avoid them in the first place! Students will be given
small pieces of source code in different programming
languages, and will be asked to find vulnerabilities and fix
them. The online course documentation will gradually reveal
more and more information to help students in this task.
Additionally, students will have a chance to try several
source code analysis tools, and see how such tools can help
them find functionality bugs and security vulnerabilities.
|
Sebastian Lopienski |
Prerequisite
Knowledge |
Desirable prerequisite
and
References to
further information |
|
|
Books
-
Secrets and Lies: Digital Security in a Networked World
by Bruce Schneier
-
Security Engineering: A Guide to Building Dependable
Distributed Systems by Ross Anderson
-
Writing Secure Code
by Michael Howard, David LeBlanc
-
Secure Coding: Principles and Practices
by Mark G. Graff, Kenneth R. van Wyk
|
|
Virtualisation |
Lectures
|
Lecture 1 |
Introduction
to virtualisation technology
First lecture covers the definition and
description of the various modes of virtualization
techniques used in computing science, also from a historical
perspective. Later we present the most recent advances and
technology trends, in particular we will single out the
server virtualization as a key enabling technology behind
the emerging cloud computing paradigm.
|
Pere Mato |
Lecture 2 |
Applications
of the virtualisation technology
Second lecture deals with possible
applications of server virtualization technology to support
LHC computing effort. We will be using the CernVM project as
an example to illustrate how a virtual machine can be
crafted to act as an end-user work environment as well as
job hosting environment running on cloud or Grid
infrastructure.
|
Pere Mato |
Exercises |
Exercises 1
Exercises 2 |
Using a virtual machine for data analysis
The student will
exercise how to setup a virtual machine and perform some
simple analysis task (using ROOT for example) on a local
host. Later we will show
how the same task can be achieved using cloud
resources such as Amazon EC2.
|
Predag Buncic
Pere Mato |
Prerequisite Knowledge |
Mandatory
prerequisite |
Be familiar with ROOT and very basic C++ and Linux/Unix
environment.
|
|
Desirable prerequisite
|
|
|
and
References to further
information
|
|
|