磁盘读取数据时间

数据存储在磁盘上的排列方式会影响I/O服务的总时间

假设每磁道划分成10个物理块,每块存放1个逻辑记录。逻辑记录R!个逻辑记录。逻辑记录R1,R2,﹍﹍ ,R10存放在同一个磁道上,记录的安排顺序如下表所示:

物理块 1 2 3 4 5 6 7 8 9 10

逻辑记录 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10

假定磁盘的旋转速度为20MS/圈,磁头当前处在R1的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为4MS,则处理这10个记录的最长时间为___。若对信息存储进行优化分布后,处理10个记录的最少时间为_______

首先从磁盘的转速:20ms/圈,我们可以知道:读取一条记录需要2ms。值得注意的一点是:处理一条记录的前提,是将其读出来。所以处理第一条记录时,要先将其读取出来,再进行处理,所以处理R1所需时间为2ms+4ms,当R1处理完时,磁头已经转到了R4的位置,此时要将其调整到R2的位置,需要经过R5,R6,R7,R8,R9,R10,R1,这样要耗16ms的时间,再加上读取R2需要2ms以及处理数据的4ms,R2的总处理时间应为22ms。所以2+4+(16+2+4)*9=204ms。而优化后的排列顺序应为:R1,R8,R5,R2,R9,R6,R3,R10,R7,R4,这样的排列顺序刚好是处理完R1,磁头就到了R2的位置,直接读取R2,处理R2,处理完R2,磁头又到了R3的位置,依此类推,每条记录的读取及处理时间为:2ms+4ms=6ms,所以总时间为:(2+4)*10=60ms。

时间: 2024-10-18 10:49:20

磁盘读取数据时间的相关文章

对于linux中读操作

关于文件的读写,实在是太过于复杂,细节太多,所以只能分析他的原理,细节牵涉太多. 本文介绍文件的读操作. 先说一下读操作的轮廓.这个读操作是从磁盘把数据读入到内核缓冲区,数据在内核缓冲区被组织成radix_tree形式,然后在把这个缓冲区的内容拷贝到用户缓冲区,用户就可以操作自己缓冲区内的数据了. 具体一点就是: 对于每一进程打开的文件,都拥有一个文件对象描述符,从文件对象描述符中可以寻找到索引节点,从索引节点又可以找到adress_space,这个对象就是文件在内存中的缓存.因此,每一个打开此

利用dd命令对Linux磁盘进行读写能力测试

在Linux中,对磁盘进行读写能力的测试,是一件非常必要的事情.虽然有一些很专业的软件去做这件事,但在某些情况下,由于技术能力限制,或用户并不需要很专业,这时就要考虑Linux内嵌命令dd了,它是一个简单易用,且功能略微强大的命令. 一.首先要了解两个特殊的设备 /dev/null:回收站.无底洞,可以把一些没用的东西丢进去 /dev/zero:产生字符,这样就可以模拟文件,不需要有文件就可以进行文件传输 二.读写能力测试 磁盘写能力测试: time dd if=/dev/zero of=/te

计算机底层知识拾遗(三)理解磁盘的机制

磁盘是一种重要的存储器,位于主存结构的下方,是永久存储的介质.在计算机底层知识拾遗(一)理解虚拟内存机制 这篇中说了虚拟内存是面向磁盘的,理解磁盘的工作原理对理解计算机的很多概念有很大的帮助.尤其是在数据库和分布式存储领域,要经常和磁盘打交道. 磁盘这块主要有几个部分的概念: 1. 磁盘的基本结构和工作原理 2. 如何在虚拟内存机制下与内存高效地交换数据 3. 磁盘如何保证数据存储的可靠性及故障恢复 磁盘的基本结构和工作原理 从单个磁盘来说,由一个个的同心圆组成,一个同心圆就是一个磁道,每个磁道

zabbix监控linux服务器的磁盘I/O

基本原理:通过分析/proc/diskstats文件,来对IO的性能进行监控.解释如下: +++++++++++++++++++++++++++对/proc/diskstats的解释++++++++++++++++++++++++++++++++++++++++++++ [[email protected] bin]# cat /proc/diskstats | grep sda | head -1 8 0 sda 73840 10263 3178156 91219 1110085 419256

使用dd工具对磁盘RAID5和10进行I/O性能测试

很多情况下大家在对于理论深信不疑,理论是有前提条件的,不是所有的情况下都是正确的.恰逢公司有服务器,故进行了磁盘性能测试,当然测试的结果也只是顺序I/O性能测试(dd机制决定的). 前提条件:(DELL R630 物理机测试,内存64G)RAID5 5块盘(600G SAS)+ 1块(GHS)RAID10 6块盘(600G SAS)+ 0块(GHS)*测试的时候为了保证测试结果的真实性,请确保测试文件的大小要远远大于内存容量. 一.磁盘写性能测试#dd if=/dev/zero of=/yc/i

CPU,内存,磁盘,指令以及它们之间的关系

众所周知计算机的组成是由控制器.运算器.存储器.输入.输出设备五部分构成,而其中CPU就是由控制器.运算器.寄存器和时钟四部分构成,磁盘和内存就属于存储设备. CPU指令主要有以下四个: 1.加载:把一个字节或一个字从内存中赋值到寄存器,覆盖原来寄存器的内容 2.存储:把一个字节或一个字从寄存器复制到内存中的某个位置,覆盖原来内存上这个位置的内容 3.操作:将两个寄存器的内容赋值到ALU,ALU对这两个字进行算术操作,将结果存储在某个寄存器中,以覆盖寄存器中原来的值 4.跳转:从指令本身抽取一个

使用dd命令测试linux磁盘读写速度的方法

1.先熟悉两个特殊的设备:(1)/dev/null:回收站.无底洞.(2)/dev/zero:产生字符. 2.测试磁盘写能力 复制代码 代码如下: time dd if=/dev/zero of=/testw.dbf bs=4k count=100000 因为/dev//zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力.命令结尾添加oflag=direct将跳过内存缓存,添加oflag=sync将跳过h

zabbix监控磁盘IO

监控磁盘IO的基本原理:通过分析/proc/diskstats文件,来对IO的性能进行监控. ++++++++++++++++++++++++对/proc/diskstats的解释++++++++++++++++++++++++++++++ # cat /proc/diskstats |grep sda |head -1    8    0     sda 2280 1445 76478 11956 249 188 3490 932 0 9913 12805 解释说明: 第一至第三个域,分别是主

磁盘IO过高时的处理办法

针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大的话,是数据库,可以进行读写分离或者分库操作,减小磁盘压力,文件的话,可以利用raid来减轻压力 一)I/O调度程序的总结: 1)当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成.2)每个块设备都有它自己的队列.3)I/O调度程序负责维护这些队列的顺序,以更有效地利用介质.I/O