COL732 Virtualization and Cloud Computing
2022-2023 Sem I
This course introduces virtualization techniques and their usage in cloud infrastructure. Students will learn various approaches towards virtualization and get hands-on experience with a modern systems programming language.
Course Information
- Prerequisites: COL331 or equivalent.
Note: The course includes programming assignments and thus expects proficiency with systems programming and debugging.
- Credits: 3-0-2
- Slot: AA, Mondays and Thursdays 2-3:15pm.
- Where: LH308
- TAs:
- Abhisek Panda: csz202445 AT cse.iitd.ac.in
- Abhishrut Omprakash Vaidya: siy217558 AT cse.iitd.ac.in
- Reading material:
- Hardware and Software Support for Virtualization.
- Research papers linked from each lecture.
Grading criteria
- 20% labs (programming + analysis assignments)
- 25% project
- 5% quizzes
- 20% minor exam
- 30% major exam
Supporting systems
- Discussions should be done on Piazza. Sending emails is discouraged.
- Labs will be submitted through Moodle. Grades will also be uploaded there.
Acknowledgements
Thanks to Mythilli Vutukuru, IITB and Xi Wang, UoW; parts of this course have been inspired by courses made available by them.
Policies
- Audit criteria:
B grade40% marks or higher. - Ethics: We will employ various methods to catch cheating. Cheating in labs/quizzes will bring zero in that lab/quiz. Cheating twice gets an F in the course.
Late policy
- To help you cope with unexpected emergencies, you can hand in your Labs solutions late, but the total amount of lateness summed over all the lab deadlines must not exceed 72 hours. You can divide up your 72 hours among the labs however you like; you don’t have to ask or tell us. You can only use late hours only for Labs.
- 1 quiz in the course can be skipped without penalty.
Tentative topics
We will deeply study a hypervisor written in rust. All the labs and the project will therefore use rust.
- Getting comfortable with Rust
- Popek Goldberg theorem
- Virtualization techniques
- Software-based virtualization:
- Full virtualization: Binary translation, shadow paging, ballooning, IO virtualization
- Paravirtualization: memory virtualization, virtio
- Hardware-assisted virtualization: KVM, EPT
- Software-based virtualization:
- Usefulness
- Checkpoint/restore
- Live migration
- State machine replication
- What’s new with virtualization?
- Unikernels
- Firecracker
Disclaimer: Actual course contents may differ depending on student interest. Reach out to the instructor as soon as possible if there is a particular interest in a topic.
Tentative Schedule
Week | Monday | Thursday | Weekend |
---|---|---|---|
1 | 1 Aug |
4 Aug LEC 1: Introduction. |
|
2 | 8 Aug LEC 2: OS Background: Virtual memory. Ch: 13-15, 18-20 OSTEP book |
11 Aug Raksha Bandhan |
|
3 | 15 Aug Independence day |
18 Aug LEC 3: OS Background: Virtualizing CPU Ch: 4-6, OSTEP book |
Lab 1 due |
4 | 22 Aug LEC 4: Rust background: Ownership and borrowing Ch. 4, 10.3, Rust book |
25 Aug LEC 5: Rust background: smart pointers Ch. 15, Rust book |
|
5 | 29 Aug LEC 6: Rust background: concurrency Ch. 16, Rust book |
1 Sep LEC 7: Trap and emulate hypervisors, Popek-Goldberg Theorem, KVM API |
Lab 2 due |
6 | 5 Sep LEC 8: Rust VMM |
8 Sep LEC 9: Rust VMM |
|
7 | 12 Sep LEC 10: Shadow page tables. Sec 6.2.2, ToCS’12 |
15 Sep LEC 11: Introduce projects. Shadow page tables (2) Sec 4.3, 4.4, 6.2, ASPLOS’06 |
|
8 | 19 Sep LEC 12: Extended page tables. Memory management |
22 Sep Project brainstorming |
|
9 | 26 Sep Minor exam |
29 Sep LEC 13: Nested virtualization |
|
10 | 3 Oct Semester break |
6 Oct LEC 14: IO virtualization. Sec 6.1, 6.2, 6.3 of the book |
|
11 | 10 Oct LEC 15: IO virtualization (2). Sec 6.4.1, 6.4.2 of the book. Live migration (post copy) |
13 Oct LEC 16: Live migration (pre copy). Virtualization without architectural support. QEMU sec 2 |
|
12 | 17 Oct LEC 17: Virtualization without architectural support. VMWare papers 1 and 2. Xen paper Sec 2.1.1, 2.1.2, 4.2, 4.5. |
20 Oct LEC 18: Fault tolerant virtual machines |
|
13 | 24 Oct Diwali |
27 Oct LEC 19: Raft |
29 Oct LEC 20: Raft (2) |
14 | 31 Oct LEC 21: Scalability Ch.5 of Introduction to Parallel Computing, Struggles with DSM |
3 Nov LEC 22: Spark |
|
15 | 7 Nov LEC 23: Lightweight Asynchronous Snapshots (Flink), Unikernels |
10 Nov Project presentations |
|
16 | 14 Nov Project presentations. Firecracker |
Encouraging student comments after the course
The course was well structured and lectures were really interesting. Thank you for making us love with system :)
The overall teaching methodology was engaging with the right amount of labs.
Exam: