(Posted Dec 7, 2022)
(Posted Dec 7, 2022)
(Posted Nov 23, 2022)
The following schedule is tentative and subject to change without notice.
Day | Topic | Reading |
---|---|---|
9/1 | Course Overview | |
9/6 | Computer systems research | I1 |
9/8 | ||
9/13 | Introduction to operating systems | H1 |
9/15 | System calls | |
9/20 | Storage | |
9/22 | ||
9/27 | ||
9/29 | ||
10/4 | File systems | FS1 |
10/6 | ||
10/11 | Exam 1 | |
10/13 | ||
10/18 | LFS | FS2 |
10/20 | ||
10/25 | Flash memory | |
10/27 | ||
10/28 | Project proposal due | |
11/1 | F2FS | FS3 |
11/3 | ||
11/8 | Modern SSDs | SSD1, SSD2, SSD3, |
11/10 | ||
11/15 | Exam 2 | |
11/17 | Processes and threads | |
11/22 | Scheduler activations | S1 |
11/24 | CPU scheduling (Online) | |
11/29 | Linux Virtual memory | |
12/1 | ||
12/6 | Superpage support | MM1 |
12/8 | ||
12/13 | Final Exam | |
12/18 | Term Paper Due | |
12/22 | Mini-Conference |
Credit: Some of the slides are borrowed from the authors’ presentations.
Implement a new system call named getcpuutil()
whose system call number is 350. It returns an integer value n
ranging from 0 to 10000 where n/100.0
represents the CPU utilization in percentage. On the first invocation, it will return the overall CPU utilization since the boot time. In the subsequence call, it will return the overall CPU utilization since the last call.
The information on the amount of time the CPU has spent is already available via the special file /proc/stat
. Using that information, you can compute the CPU utilization as 1 - (total idle time / total elapsed time)
. For more information on the /proc/stat
, please refer to the kernel document in ./Documentation/filesystems/proc.rst
. You may find the relevant code in the ./fs/proc/stat.c
file useful during the implementation of the getcpuutil()
system call.
Also, you need to write a user-level program that prints the CPU utilization every second by calling the getcpuutil()
system call. Then, run an application of you choice (e.g., Firefox, RocksDB, gzip, or other CPU-intensive application) along with the above program to obtain a graph that shows the variation in the CPU utilization. Please attach the graph in your report with the explanation on your getcpuutil()
implementation.
You can prepare a compressed patch file as follows. Assume that the vanilla 5.15.65 kernel is in the ./linux-5.15.65-vanilla
directory, while your modified kernel is in the ./linux-5.15.65
directory.
$ (cd linux-5.15.65-vanilla; make distclean)
$ (cd linux-5.15.65; make distclean)
$ diff -uprN linux-5.15.65-vanilla linux-5.15.65 > studentID.patch
$ gzip studentID.patch
Please double-check your patch file whether it contains some unnecessary materials. Also, please make sure that you should build your kernel with the x86_64_defconfig
configuration file.
For more details on generating a patch file, please refer to here.
Setup your Ubuntu environment in your own machine or in the Virtual Machine, and replace its kernel with the latest longterm support version of the Linux kernel, 5.15.65. You need to submit the screen shots of the booting message where you print your student ID and name, and also the result of the cat /proc/version
command.
Install the latest VirtualBox 6.1.38 from https://virtualbox.org on your x86_64
machine
Download the Ubuntu Desktop 20.04.1 LTS Desktop version here and install it in your VirtualBox.
Download the reference Linux kernel 5.15.65 as follows:
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.65.tar.xz
$ tar xvf linux-5.15.65.tar.xz
Install prerequisite packages for kernel compiling
$ sudo apt install build-essential ncurses-dev libssl-dev flex bison libelf-dev
x86_64_defconfig
to configure your kernel)$ cd linux-5.15.65
$ make x86_64_defconfig
$ make all
$ sudo make modules_install
$ sudo make install
FYI: The tutorial video is available at https://youtube.com/c/openssds
Modify the Linux kernel to print your student ID and name in the middle of booting message and take a screen shot during booting. Please be creative when you print your name.
After the booting, please execute the following command and take a screen shot of its output.
$ cat /proc/version
Paste those two screen shots into a word file or a powerpoint file, and upload the file using the Google Form.
The following shows the reference platform used in this course.
Time | Title | Team | Name |
---|---|---|---|
11:00-11:10 | Opening | ||
11:10-11:20 | Mobile Applications I/O Analysis with eBPF | 졸업시켜조 | 최인혁 최순원 |
11:20-11:30 | Reinforcement Learning based DVFS Governor with Integer-only Operations | 기창민조 | 전창민 양기창 |
11:30-11:40 | Analysis on Performance Overhead by Memory Duplication in VM-based Serverless Environment | 구조 | 임근수 이현승 서성훈 |
11:40-11:50 | Improving Network Throughput in IPsec Environment | 컴퓨터구조 | 김민섭 김상윤 |
11:50-12:00 | Break | ||
12:00-12:10 | Applying eBPF to Reduce Append-Checksum-Write Overhead | 도와조 | 강일권 문채원 권형준 |
12:10-12:20 | Performance Ebaluation of Linux File Systems with Blender | 타조 | 김선준 정민효 |
12:20-12:30 | RocksDB Compaction Optimization by Leveraging Small Zone ZNS | 희성조 | 신희원 강성민 |
12:30-12:40 | Inter-VM Interrupt for Event Signaling via Port Addressing | Int’l Relations | Jaume Melker Jihong |
12:40-12:50 | Extension and Generic Implementation of IPI Tracepoints | 학부생이조 | 박재온 이정범 |
(I1) ⭐️ Butler W. Lampson, “Hints for Computer System Design,” SOSP, 1983. (The SIGOPS Hall of Fame Award ‘05)
(I2) Roy Levin and David D. Redell, “An Evaluation of the Ninth SOSP Submissions or How (and How Not) to Write a Good Systems Paper,” ACM Operating Systems Review, 1983.
(I3) Aaron B. Brown, Anupam Chanda, Rik Farrow, Alexandra Fedorova, Petros Maniatis, and Michael L. Scott, “The Many Faces of Systems Research - And How to Evaluate Them,” HotOS, 2005.
(FS1) ⭐️ Marshall K. McKusick, William N. Joy, and Samuel J. Leffler, “A Fast File System for UNIX,” ACM TOCS, 1984. (The SIGOPS Hall of Fame Award ‘15)
(FS2) ⭐️ Mendel Rosenblum and John K. Ousterhout, “The Design and Implementation of a Log-Structured File System,” SOSP, 1991. (The SIGOPS Hall of Fame Award ‘12)
(FS3) ⭐️ Changman Lee, Dongho Sim, Joo-Young Hwang, and Sangyeun Cho, “F2FS: A New File System for Flash Storage,” FAST, 2015.
(SSD1) ⭐️ Jeong-Uk Kang, Jeeseok Hyun, Hyunjoo Maeng, and Sangyeun Cho, “The Multi-streamed Solid-State Drive,” HotStorage, 2014.
(SSD2) ⭐️ Matias Bjorling, Abutalib Aghayev, Hans Holmberg, Aravind Ramesh, Damien Le Moal, Gregory R. Ganger and George Amvrosiadis, “ZNS: Avoiding the Block Interface Tax for Flash-based SSDs,” Usenix ATC, 2021.
(SSD3) ⭐️ Jaeyoung Do, Sudipta Sengupta, and Steaven Swanson, “Programmable Solid-State Storage in Future Cloud Datacenters,” CACM, 2021.
(S1) ⭐️ Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, and Henry M. Levy, “Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism,” TOCS, 1992.
(S2) ⭐️ Carl A. Waldspurger and William E. Weihl, “Lottery Scheduling: Flexible Proportional-Share Resource Management,” OSDI, 1994.
(S3) Carl A. Waldspurger and William E. Weihl, “Stride Scheduling: Deterministic Proportional-Share Resource Management,” Technical Memorandum MIT/LCS/TM-528, MIT Laboratory for Computer Science, 1995.
(S4) Jean-Pierre Lozi, Baptiste Lepers, Justin Funston, Fabien Gaud, Vivien Quema, and Alexandra Fedorova, “The Linux Scheduler: a Decade of Wasted Cores,” EuroSys, 2016.
(MM1) ⭐️ Juan Navarro, Sitaram Iyer, Peter Druschel, and Alan Cox, “Practical, Transparent Operating System Support for Superpages,” OSDI, 2002.
(MM2) ⭐️ Nimrod Megiddo and Dharmendra S. Modha, “ARC: A Self-Tuning, Low Overhead Replacement Cache,” FAST, 2003. (USENIX Test of Time Award ‘14)
(VM1) ⭐️ Edouard Bugnion, Scott Devine, and Mendel Rosenblum, “Disco: Running Commodity Operating Systems on Scalable Multiprocessors,” SOSP, 1997. (Best Paper Award, The SIGOPS Hall of Fame Award ‘08)
(VM2) Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, and Andrew Warfield, “Xen and the Art of Virtualization,” SOSP, 2003.
(VM3) Carl A. Waldspurger, “Memory Resource Management in VMware ESX Server,” OSDI, 2002. (Best Paper Award, The SIGOPS Hall of Fame Award ‘15)
(VM4) Christopher Clark, Keir Fraser, Steven Hand, Jacob Corm Hansen, Eric Jul, Christian Limpach, Ian Pratt, and Andrew Warfield, “Live Migration of Virtual Machines,” NSDI, 2005. (USENIX Test of Time Award ‘05)
(OS1) The Tanenbaum-Torvalds Debate, 1992.
(OS2) Jochen Liedtke, “On μ-Kernel Construction,” SOSP, 1995. (The SIGOPS Hall of Fame Award ‘15)
(OS3) M. Frans Kaashoek, Dawson R. Engler, Gregory R. Ganger, Hector M. Briceno, Russell Hunt, David Mazieres, Thomas Pinckney, Robert Grimm, John Jannotti, and Kenneth Mackenzie, “Application Performance and Flexibility on Exokernel Systems,” SOSP, 1997.
(OS4) Andrew Baumann, Paul Barham, Pierre-Evariste Dagand, Tim Harris, Rebecca Isaacs, Simon Peter, Timothy Roscoe, Adrian Schupbach, and Akhilesh Singhania, “The Multikernel: A New OS Architecture for Scalable Multicore Systems,” SOSP, 2009.
(OS5) Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, David Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand, and Jon Crowcroft, “Unikernels: Library Operating Systems for the Cloud,” ASPLOS, 2013.
(OS6) Simon Peter, Jialin Li, Irene Zhang, Dan R. K. Ports, Doug Woos, Arvind Krishnamurthy, and Thomas Anderson, “Arrakis: The Operating System is the Control Plane,” OSDI, 2014. (Best Paper Award)
When | 11:00 - 12:15 (Tuesday / Thursday) |
Where | Lecture room #301-101 |
Instructor | Jin-Soo Kim Professor, Dept. of Computer Science and Engineering, SNU |
Language | English |
Course Description | This course covers advanced operating system concepts as well as a broad spectrum of research topics in computer systems. Quality research papers from SOSP, OSDI, ASPLOS, USENIX ATC, FAST, NSDI, EuroSys, etc. will be used as class materials. Students must be actively involved in reading, presenting, and discussing selected papers to understand the recent trends in operating systems and computer systems research. In addition, students are required to write up a term paper by the end of the semester as a result of their own study on a particular research topic. |
References | • Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces, Apraci-Dusseau Books, March 2015 (Version 1.00). • Thomas Anderson and Michael Dahlin, Operating Systems: Principles and Practice, 2nd Edition, Recursive Books, August 2014. • Andrew S. Tanenbaum and Herbert Bos, Modern Operating Systems, 4th Edition, Pearson Education, Inc., 2015. |
Prerequisites | • M1522.000800 Undergraduate Systems Programming or equivalent • 4190.307 Undergraduate Operating Systems or equivalent • 4190.308 Undergraduate Computer Architecture or equivalent |
Grading | Assignments: 5% Exams: 65% Term project: 30% * Grading policy is subject to change |
Teaching Assistant | TBD |