CS 695: Virtualization and Cloud Computing

Spring 2020

Lectures: Slot 9 (Mon/Thu 3:30pm to 5pm), Venue: CC 103.

Instructor: Mythili Vutukuru (mythili @ cse.iitb.ac.in)

Instructor Office Hours: By appointment (please send email to fix up a time).

TAs: Diptaroop Maji (diptyaroop@cse), Nilesh Unhale (nileshunhale@cse), Maharishi Bhargava (maharishib@cse)

Course Overview

CS695 is a graduate-level course open to undergraduate and postgraduate students. A previous course on operating systems (CS347/CS333 for UGs, CS744 for PGs) is a hard pre-requisite. The course also involves significant hands-on programming, so an interest and aptitude for systems programming is highly desirable. Please talk to the instructor if you do not meet these criteria but still wish to take the class.

This course covers basic and advanced concepts related to the virtualization and how it enables the latest revolution of cloud computing. You will understand the various virtualization paradigms of full virtualization, para virtualization, and hardware-assisted virtualization, for CPU, memory, and I/O. You will also learn about containers and related concepts. The later part of the course will cover various advanced topics related to virtual machine migration, provisioning, nested virtualization, security, unikernels, and so on. The programming assignments in the course are designed to reinforce the concepts learnt in class.

Grading Policy: The weightage for the various components of the course is as follows: mid-semester exam: 20%, end-semester exam: 30%, weekly quizzes: 10%, programming assignments: 40%.

Programming Assignments

  1. Build your own hypervisor using the KVM API Due: Feb 14, Friday, 11:55 pm
  2. Build your own cloud management system using the libvirt API Due: March 25, Wednesday, 11:55 pm
  3. Build your own container using Linux namespaces and cgroups Due: April 22, Wednesday, 11:55 pm.

Reading List

You are expected to have a reasonable grasp of OS concepts before you begin this course. You may use my Lecture Notes on Operating Systems to brush up your knowledge.

There is no prescribed textbook for this course, and most of the content of this course is sourced from research papers and articles, listed below.

  1. Introduction to virtualization [notes]
  2. Hardware assisted virtualization [notes]
  3. Full virtualization [notes]
  4. Paravirtualization [notes]
  5. Memory management in hypervisors [notes]
  6. I/O virtualization and performance optimizations [notes]
  7. Nested virtualization [notes]
  8. VM live migration (and related ideas) [notes]
  9. Containers [notes]
  10. Lightweight VMs [notes]
  11. Introduction to cloud computing: architecture of cloud applications, cloud storage platforms [notes]