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-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南