linux系统编程——文件IO——IO调度与性能
2021/8/24 7:05:34
本文主要是介绍linux系统编程——文件IO——IO调度与性能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 为什么需要IO调度
由于cpu和磁盘的操作周期差 500万倍以上,所以若按照发出IO请求的顺序将IO请求传送给磁盘,效率将非常低,
所以内核会实现IO调度,调整IO请求顺序及时间,以减少磁盘查询次数和大小。
以尽可能降低磁盘访问对系统性能所造成的影响。
2. 磁盘寻址
磁盘虽然使用多级寻址,但现代磁盘会将独一无二的块编号映射到 三级寻址的组合。
所以现代操作系统可以使用块号进行寻址。
通常块与 三级地址 的映射关系是顺序的,如 物理块n,相邻的块为n+1。
另外文件系统使用的最小数据单元为逻辑块,逻辑块为物理块的整数倍。
2.1 合并和排序
IO调度的基本操作:合并和排序
合并:将相邻块的IO请求组合成一个请求。
排序:按照递增的块顺序安排IO请求。
从而减少磁头移动,高效IO
3.设置合适内核IO调度
若使用固态硬盘,由于没有磁头,所以不需要排序,建议使用 noop
若需要好的交互性,建议使用 cfq,可以避免读饿死
若使用磁盘,建议使用 cfq
在 /sys/block/device/queue/scheduler 设置
4. 用户层IO调度
若希望使用IO排序功能,但是内核IO排序只能作用于一小段IO,
若程序有大量IO,则会导致无法排序访问,若程序自己对IO进行排序,则能保证高效IO。
推荐使用 inode排序,或物理块排序、
inode排序的优点:inode容易获得,容易排序,且接近物理块。
缺点:接近只是猜测,对非unix文件系统而言不准确。
但inode排序是用户空间IO请求调度的最常用方法。
物理块排序:优点:准确的顺序,缺点:获得物理块需要root权限。
这篇关于linux系统编程——文件IO——IO调度与性能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法