Try   HackMD

Linux 核心設計: 針對事件驅動的 I/O 模型演化

注意!這是上課筆記

原始課程在這裡

Original by jserv


Section Time Description
1 00:00:16 The Evolution of Linux I/O Models: A Path towards IO_uring
1. 簡介。
2. Blocking I/O: read().
3. Non-blocking I/O.
4. 在充滿偏見的台灣,用知識武裝自己。
5. I/O Multiplexing: select(), epoll().
6. Asynchronous I/O: aio_read().
7. AIO 的效益在多核環境下,效果較顯著。
8. AIO pros and cons.
9. thread pool 的設計:醫生跟病患。
10. sendfile(): 降低 kernel and user space 的資料存取。
11. Linux libaio functions.
12. POSIX AIO(user level) v.s. KAIO(kernel level).
13. io_uring: submission queue(SQ) and completion queue(CQ).
14. 實驗數據:sync / posix-aio / libaio / io_uring.
2 01:21:36 1. 簡單複習。
2. 多執行緒的講古: 在執行緒出來之前,使用 epoll 滿足需求。
3. "對 seHTTPd 進行壓力測試"。
4. cserv 專案。
5. Asynchronous I/O Model.
3 01:35:13 1. Event-driven Server
2. 案例探討: NGINX.
3. Proxy server 創業講古時間.
4 01:56:43 1. NGINX 的介紹。
5 02:03:38 1. 以 sendfile 和 splice 系統呼叫達到 Zero-Copy.
2. khttpd 的講古。
3. sendfile 系統呼叫。
4. Zero-Copy.
6 02:26:30 1. splice 系統呼叫。
2. Thread Pool.
3. Thread pool 與 epoll loop 的關係。
4. 野雞大學上課的經驗分享。
7 02:52:37 1. 高效 Web 伺服器開發。
2. TCP 伺服器的實作挑戰。
8 03:08:31 1. Reactor Pattern.
2. edge/ level trigger.
3. 實作考量點。
4. 透過 timerfd 處理週期性任務。
5. khttpd jserv 版.