Essential Preparation
This module focuses on Java-based systems, so students should be competent Java developers and know the basics of memory management, garbage collection, etc. Students should also have had some exposure to computer performance issues in general e.g. how is computer performance specified, what resources are available (e.g. CPU, memory), what impact they have on system performance, etc. A basic mathematical knowledge of optimisation & probability is helpful, since the module includes an introductory treatment of queueing theory and queueing networks.
Recommended Reading
The recommended text is the book by Connie Smith and Lloyd Williams, "Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software" published by Addison Wesley, 2002, ISBN 0-201-72229-1. However it is not required as the module only covers a fraction of the book, and the lecture notes (which are made available) are self-contained. There is a related website http://www.perfeng.com/ that has a lot of useful links and resources.
Programming Preparation
No particular preparation is required, but the module is heavily Java-based and you are expected to be a competent Java programmer. If you’re not, you should study Java in your own time before the module.
Technology Used
Among the tools used during the module are JBoss, GCViewer, Linux profiling commands, JMT modelling tools, myprofiler for Java, and JConsole.
Students will be required to use a Unix OS during the labs - Windows users should install (1) a VM using Ubuntu 16.04.3 (https://www.ubuntu.com/download/alternative-downloads), though any recent, stable version should be ok, and (2) the latest version of Virtualbox (https://www.virtualbox.org/wiki/Downloads?replytocom=98578).
Please contact the Teaching Assistant for this module, Egemen Ciritoglu if you have any questions about installing this software.