[发明专利]数据读取方法、装置及计算设备有效
| 申请号: | 201310267802.4 | 申请日: | 2013-06-28 |
| 公开(公告)号: | CN103336672A | 公开(公告)日: | 2013-10-02 |
| 发明(设计)人: | 张勇;李海丰;杜培亮 | 申请(专利权)人: | 华为技术有限公司 |
| 主分类号: | G06F3/06 | 分类号: | G06F3/06 |
| 代理公司: | 北京弘权知识产权代理事务所(普通合伙) 11363 | 代理人: | 陈蕾;许伟群 |
| 地址: | 518129 广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 数据 读取 方法 装置 计算 设备 | ||
技术领域
本发明涉及计算机领域,特别涉及数据读取方法、装置及计算设备。
背景技术
计算设备内通常包括具有计算能力的中央处理器(Central Processing Unit,CPU)、硬盘、内存等硬件设备。其中,硬盘和内存均为计算设备内的存储媒介,由于硬盘由机械部件带动运转,因此CPU从硬盘内读取数据的速度要远低于从内存读取数据的速度。现有技术中,CPU从硬盘内读取数据时,将根据数据读请求所请求数据的大小依次生成多个块读取请求,并对这些块读取请求进行串行处理,即每一次仅读取一个块读取请求对应的数据。
发明人在对现有技术的研究过程中发现,通过串行处理方式对块读取请求进行处理时,由于同一时刻仅处理一个块读取请求,因此处理效率和数据读取效率都较低;并且,由于处理每一个块读取请求时,都需要挂起数据读请求的用户进程,并在处理下一个块读取请求时,唤醒前一次挂起的用户进程,因此当同一数据读请求的块读取请求较多时,计算设备内的进程调度开销较大。
发明内容
本发明实施例提供数据读取方法、装置及计算设备,以提高从硬盘读取数据效率,减少数据读取过程中进程调度的开销。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面,提供一种数据读取方法,所述方法包括:
接收用户进程提交的数据读请求;
根据所述数据读请求生成至少两个块读取请求;
将所述至少两个块读取请求一次性提交至硬盘的输入输出IO调度队列;
通过调度所述IO调度队列中的所述至少两个块读取请求,将所述数据读请求所请求的数据从硬盘缓存区读取到用户缓存区。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述数据读请求生成至少两个块读取请求,包括:
根据所述数据读请求所请求的数据的大小将所述数据分解成多个数据页;
在内核缓存区内为所述多个数据页中的至少两个数据页分配存储空间;以及
为所述至少两个数据页中的每一个数据页生成一个块读取请求。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述在内核缓存区内为所述多个数据页中的至少两个数据页分配存储空间具体包括:根据所述多个数据页的缓存位置,在所述内核缓存区内为所述多个数据页中位于硬盘缓存区的至少两个数据页分配存储空间;
所述为所述至少两个数据页中的每一个数据页生成一个块读取请求具体包括:为所述位于硬盘缓存区的至少两个数据页中的每一个数据页生成一个块读取请求。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:
根据所述多个数据页的缓存位置,将所述多个数据页中位于所述内核缓存区的数据页的数据从所述内核缓存区读取到用户缓存区。
结合第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述通过调度所述IO调度队列中的所述至少两个块读取请求,将所述数据读请求所请求的数据从硬盘缓存区读取到用户缓存区,包括:
依次调度所述IO调度队列中的块读取请求,将每一个块读取请求所请求的数据从所述硬盘缓存区读取到在所述内核缓存区内为所述每一个块读取请求的数据页分配的存储空间,并从所述分配的存储空间读取到用户缓存区。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述将所述至少两个块读取请求一次性提交至硬盘的IO调度队列后,所述方法还包括:挂起所述用户进程;
所述将所述数据读请求所请求的数据从硬盘缓存区读取到用户缓存区后,所述方法还包括:唤醒所述用户进程。
第二方面,提供一种数据读取装置,所述装置包括:
接收单元,用于接收用户进程提交的数据读请求;
生成单元,用于根据所述接收单元接收到的所述数据读请求生成至少两个块读取请求;
提交单元,用于将所述生成单元生成的所述至少两个块读取请求一次性提交至硬盘的输入输出IO调度队列;
读取单元,用于通过调度所述IO调度队列中的由所述提交单元提交的至少两个块读取请求,将所述数据读请求所请求的数据从硬盘缓存区读取到用户缓存区。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310267802.4/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





