CARLETON UNIVERSITY

Department of Systems and Computer Engineering
 
 

94.511 DESIGN OF HIGH-PERFORMANCE SOFTWARE Winter 2003

____________________________________________________________

Consultation times: Wed Dec 18 2002 10- 12 AM, or Fri Dec 20 2002 10 –12 AM.

Anyone who wants to register as a Special Student needs me to sign a form... come at one of the above times, or call or email before if you want to do it by fax.
Also anyone who is unsure if they meet the requirements, come at one of these times and we can discuss it.

The Background requirements are described below....

-------------------------------------------------------
 

Course Handout

Instructor: C. M. Woodside, 4482 MacKenzie Building, tel 520-5721,

 email:cmw@sce.carleton.ca

Time and Place: 5.30 to 7.00, Tuesday and Thursday, Room 3165 MacKenzie

Course Purpose

Our first concern is with network software, including infrastructure such as switches and middleware, and services such as web browsing, e-commerce, data access, and distributed applications. This is event-driven reactive software, handling events, messages and user requests. Software designs often contain performance problems right in their essential structure. The course teaches a modeling approach based on analysis of the design itself. It will cover performance concepts and measures, and simple tools and methods that give insight on performance. Early warning about performance issues in a software design, patterns with performance significance, and early action to improve performance and scalability, are the core topics of the course.

The course will study

These patterns are the basis of the dominant solutions to high performance in systems, such as RAID, RISC, and multi-level caching. The course will show how to exploit them in software design too.

Besides network software, consideration will be given to other classes of system in which time is important, such as  deadline-driven safety-critical software and highly parallel software (as used for scientific computing).

The course is a preparation both for immediate application, and for research in "Software Performance Engineering". Our department is one of the leading centers of world-wide research progress in this new area.

What you need to know for background

An undergraduate degree in computer engineering or computer systems, or computer science with a systems slant, or a year’s experience as a developer, is usually adequate background. To benefit from this course you must have

and it would be useful to have additional courses or experience in topics such as real-time systems and their design, statistics and probability, and performance analysis.

Overview

1. Performance Concepts

Performance quantities and how they are measured; resources in software and hardware.

2. Description of designs.

Behaviour is described by activity graphs, based on Use Cases; structure is described by module models; define connections between these two, add special attributes of modules which are also concurrent threads or processes. Workload and parameters. This part of the course will be based on slides presented in lectures, and on papers handed out in class, as will parts 3 and 4.

3. Analysis and prediction of performance

Performance metrics related to the models (descriptions) above; the mechanics of obtaining the metrics by setting up and solving models. The main models are Petri nets, queueing models, layered queueing for concurrent and parallel task systems, and task graphs. We will aim for an understanding of the semantics of the models, and what they are good for, but we will not go into the theories they are based on, or into the solvers. Emphasis on layered queueing, due to its special capabilities. This part of the course will use the book "Performance Engineering of Real-time Software", by Connie Smith, available from the University bookstore as a course pack (the book is out of print).

Bottleneck identification; scalability limitations; performance estimation.

4. Interaction of Software and its Environment

The environment includes the hardware, operating system, and services used by the design. Representation in models; typical problems.

5. Architectural patterns

Throughout the above topics will be woven concepts of systems built of common architectural patterns, the effect of the patterns on performance (and how the effect depends on the parameters of the system). The use of the patterns to improve performance. Advanced patterns include replication, partitioning, fast paths, optimistic design. Patterns for reliability, and their effect on performance.

6. Project

An important part of the course will be a project to study a system of special interest to the student, or proposed by the instructor. Projects will involve using software modeling and analysis tools, which can be used in the lab or from home or (in some cases) from work. The project will take about 5 hours a week in the second half of the term.

Reference Books

Research papers will be distributed in the class.

There are many books that describe performance modeling concepts; one that is widely available is

Raj Jain, “The Art of System Performance Modeling”,

C. U. Smith has written widely on software performance. She has two books; the first has more detail but is now out of print.

C. U. Smith, “Performance Engineering of Software Systems”, Addison Wesley, 1990

C. U. Smith,, L. Williams, "Performance Solutions", Addison Wesley 2001.

Evaluation


Additional Materials for the course:


Assignments and handouts directory

Survey paper "Performance Validation at Early Stages of Development" by Smith and Woodside from Performance 99, Istanbul.

Survey chapter "Software performance evaluation by models" by Woodside, in "Performance Evaluation: Origins and Directions", Springer 2000

Chapter  on UML and Performance, by Woodside and Petriu, currently in press for a volume by Kluwer

OMG Profile for UML on Schedulability, Performance and Time