练习题与扩展阅读
练习题
基础题
- IO控制方式有哪几种?各有什么优缺点?分别适合什么场景?
- 衡量IO性能的三个核心指标(带宽、延迟、IOPS)分别是什么含义?分别适合衡量什么样的场景?
- HDD和SSD的工作原理有什么不同?各有什么优缺点?
- 常见的IO模型有哪几种?各有什么优缺点?分别适合什么场景?
- 什么是Page Cache?它对IO性能有什么影响?
实操题
- 用iostat(Linux)或者资源监视器(Windows)查看你电脑的磁盘IO情况,分别观察连续读写和随机读写的IOPS和带宽。
- 编写一个简单的文件复制程序,分别用阻塞IO和异步IO实现,对比两者的性能差异。
- 测试你的U盘、SSD、HDD的读写速度,对比不同存储设备的性能差异。
- 编写一个简单的TCP服务器,分别用BIO和IO多路复用模型实现,对比两者能支持的最大并发连接数。
思考题
- 为什么IO系统会成为计算机系统的性能瓶颈?未来有什么技术可能解决这个问题?
- 什么是局部性原理?它和存储层次结构有什么关系?
- 高并发网络服务器为什么都采用IO多路复用模型?它相比多线程阻塞IO模型有什么优势?
- 随着SSD的价格越来越低,未来HDD会被完全取代吗?为什么?
扩展阅读
书籍推荐
-
《UNIX环境高级编程》(第3版)
- 第14章高级IO、第16章网络IPC:套接字等章节详细讲解了UNIX系统下的IO操作
- 系统编程的经典著作,适合想深入学习系统IO的开发者
-
《高性能MySQL》
- 第7章MySQL高级特性、第8章优化服务器设置等章节讲解了存储和IO优化的内容
- 对于理解数据库的IO优化非常有帮助
-
《深入理解计算机系统》
- 第6章存储器层次结构、第10章系统级I/O等章节讲解了存储和IO的原理
- 帮助你从底层理解IO系统的工作原理
在线资源
-
- 知乎上的优质文章,详细讲解了Linux下的五种IO模型,图文并茂,通俗易懂
-
- 经典的C10K问题原文,讲解了如何让服务器支持1万个并发连接
- 是高性能服务器开发的必读文章
-
- MDN的Web性能优化指南,包含网络IO优化、资源加载优化等内容
- 适合前端开发者学习
-
- AWS官方的存储最佳实践白皮书
- 讲解了不同场景下的存储选型和优化方法,适合后端和运维人员阅读
工具推荐
- iostat / vmstat / dstat:Linux下的系统性能监控工具,可以查看CPU、内存、磁盘IO、网络等性能指标
- perf:Linux下的性能分析工具,可以分析程序的性能瓶颈,包括IO相关的瓶颈
- CrystalDiskMark:Windows下的磁盘性能测试工具,可以测试连续读写、4K随机读写等性能
- Wireshark:网络抓包工具,可以分析网络IO的详细情况,排查网络问题
- FIO:开源的IO性能测试工具,支持各种IO场景的测试,非常强大
参考答案
练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。