Windows中监视IO性能
电脑性能监控工具推荐实时了解硬件状态与性能

电脑性能监控工具推荐实时了解硬件状态与性能随着科技的不断进步和发展,电脑在我们的生活中扮演着越来越重要的角色。
然而,我们使用的电脑是否正常运行,其硬件状态和性能表现如何,并不总是易于察觉。
为了更好地了解电脑的性能状况,我们需要借助一些专业的工具来进行监控。
本文将为大家推荐一些实用的电脑性能监控工具,帮助用户实时了解硬件状态和性能。
一、CPU-ZCPU-Z是一款免费且功能强大的电脑性能监控工具。
它提供了对CPU、内存、主板和显卡等硬件信息的全面监控。
用户可以通过CPU-Z查看CPU的型号和架构、主频以及核心数等信息,了解CPU的性能表现和工作状态。
此外,CPU-Z还可以显示内存的容量、频率和时序等信息,帮助用户更好地了解电脑的内存使用情况。
二、HWMonitorHWMonitor是一款可靠的电脑硬件监控工具,它能够实时监测电脑各个硬件组件的温度、电压、风扇转速等关键参数。
用户可以通过HWMonitor查看CPU和显卡的温度,确保它们在正常范围内运行,避免过热导致的性能问题或硬件损坏。
此外,HWMonitor还提供了对电脑主板的监控,用户可以了解主板的电源供应情况以及风扇的转速等信息。
三、CrystalDiskInfoCrystalDiskInfo是一款专业的硬盘监测工具,它能够实时监测硬盘的健康状态和性能表现。
通过CrystalDiskInfo,用户可以获取硬盘的温度、工作时间、传输速度等信息,了解硬盘的运行状况。
此外,CrystalDiskInfo还可以提供硬盘的S.M.A.R.T(自监测、分析与报告技术)数据,帮助用户判断硬盘是否存在潜在的故障风险,并及时采取相应的措施。
四、MSI AfterburnerMSI Afterburner是一款被广泛应用于超频和性能优化的工具,同时也可以用作电脑性能监控工具。
用户可以通过MSI Afterburner监控图形卡的温度、核心频率、显存使用情况等参数,帮助用户实时了解图形卡的工作状态。
利用Windows CMD命令监测系统性能

利用Windows CMD命令监测系统性能在日常使用电脑的过程中,我们经常会遇到电脑运行缓慢、卡顿等问题。
这些问题可能是由于系统性能不佳所致。
为了更好地了解和监测系统性能,我们可以利用Windows CMD命令来进行监测和优化。
一、查看系统基本信息要了解系统的基本信息,我们可以使用命令"systeminfo"。
在CMD中输入该命令后,系统会显示出关于操作系统、处理器、内存、BIOS等详细信息。
通过查看这些信息,我们可以了解到系统的硬件配置和基本性能。
二、监测CPU使用率CPU是电脑的大脑,它的使用率直接影响系统的运行速度。
我们可以通过命令"wmic cpu get loadpercentage"来查看当前CPU的使用率。
该命令会显示出一个0-100的数字,表示CPU的使用率百分比。
如果该数字持续高于80%,说明CPU负载较高,可能会导致系统运行缓慢。
此时,我们可以通过关闭一些不必要的程序或者进行系统优化来降低CPU的负载。
三、检测内存占用内存是电脑的临时存储空间,它的占用情况也会直接影响系统的性能。
我们可以使用命令"wmic OS get FreePhysicalMemory"来查看当前系统的可用内存大小。
该命令会显示出一个以KB为单位的数字,表示系统当前可用的物理内存大小。
如果可用内存持续较低,说明系统内存占用较高,可能会导致系统运行缓慢。
此时,我们可以通过关闭一些占用较大内存的程序或者增加内存容量来提升系统性能。
四、监测磁盘使用情况磁盘是存储电脑数据的地方,它的使用情况也会对系统性能产生影响。
我们可以使用命令"wmic logicaldisk get size,freespace,caption"来查看当前磁盘的总大小、可用空间以及磁盘盘符。
通过比较磁盘总大小和可用空间的差值,我们可以了解到磁盘的使用情况。
如果可用空间持续较低,说明磁盘占用较高,可能会导致系统运行缓慢。
CMD命令中的系统信息查询与监控技巧

CMD命令中的系统信息查询与监控技巧在计算机的日常使用中,我们经常需要查询系统的一些信息,或者监控系统的运行状态。
CMD命令是Windows操作系统中的一个重要工具,可以帮助我们实现这些功能。
本文将介绍一些CMD命令中的系统信息查询与监控技巧。
一、查询系统信息1. 查看操作系统版本信息:使用命令"ver"可以查看当前系统的版本信息,包括操作系统的名称、版本号等。
这对于了解系统的基本情况非常有帮助。
2. 查看计算机的名称:使用命令"hostname"可以查看当前计算机的名称。
这对于在局域网中定位计算机非常有用。
3. 查看IP地址信息:使用命令"ipconfig"可以查看当前计算机的IP地址、子网掩码、默认网关等信息。
这对于网络配置和故障排查非常有帮助。
4. 查看网络连接状态:使用命令"netstat"可以查看当前计算机的网络连接状态,包括正在监听的端口、已建立的连接等。
这对于排查网络问题和检测潜在的安全风险非常有用。
5. 查看硬盘使用情况:使用命令"wmic logicaldisk get size,freespace,caption"可以查看当前计算机各个硬盘的总容量、可用空间以及盘符。
这对于了解硬盘使用情况和进行存储管理非常有帮助。
二、监控系统状态1. 监控CPU使用率:使用命令"wmic cpu get loadpercentage"可以实时监控当前系统的CPU使用率。
这对于了解系统的负载情况和性能优化非常有帮助。
2. 监控内存使用情况:使用命令"wmic os get freephysicalmemory"可以实时监控当前系统的可用物理内存。
这对于了解系统的内存使用情况和进行内存优化非常有帮助。
3. 监控磁盘IO情况:使用命令"perfmon"可以打开Windows性能监视器,通过添加磁盘IO计数器来监控磁盘的读写速度、队列长度等指标。
windows下如何查看磁盘IO性能

windows下如何查看磁盘IO性能 2012-04-10 15:56:48分类: 系统运维通常,我们很容易观察到数据库服务器的内存和CPU压力。
但是对I/O压力没有直观的判断方法。
磁盘有两个重要的参数: Seek time、 Rotational latency。
正常的I/O计数为:①1000/(Seek time+Rotational latency)*0.75,在此范围内属正常。
当达到85%的I/O计数以上时则基本认为已经存在I/O瓶劲。
理论情况下,磁盘的随机读计数为125、顺序读计数为225。
对于数据文件而言是随机读写,日志文件是顺序读写。
因此,数据文件建议存放于RAID5上,而日志文件存放于RAID10或RAID1中。
下面假设在有4块硬盘的RAID5中观察到的Physical Disk性能对象的部分值:Avg. Disk Queue Length 12Avg. Disk Sec/Read .035Avg. Disk Sec/Write .045Disk Reads/sec 320Disk Writes/sec 100Avg. Disk Queue Length,12/4=3,每块磁盘的平均队列建议不超过2。
Avg. Disk Sec/Read一般不要超过11~15ms。
Avg. Disk Sec/Write一般建议小于12ms。
从上面的结果,我们看到磁盘本身的I/O能力是满足我们的要求的,原因是因为有大量的请求才导致队列等待,这很可能是因为你的SQL语句导致大量的表扫描所致。
在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用几块硬盘可以满足这样的并发要求:Raid 0 -- I/Os per disk = (reads + writes) / number of disks Raid 1 -- I/Os per disk = [reads + (2 * writes)] / 2Raid 5 -- I/Os per disk = [reads + (4 * writes)] / number of disks Raid 10 -- I/Os per disk = [reads + (2 * writes)] / number of disks我们得到的结果是:(320+400)/4=180,这时你可以根据公式①来得到磁盘的正常I/O值。
磁盘io性能监控(linux和windows)

[转载]磁盘IO性能监控(Linux 和 Windows)Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。
其中iostat 可以给我们提供丰富的IO状态数据。
基本使用$iostat -d -k 1 10参数-d 表示,显示设备(磁盘)使用状态;-k某些使用block 为单位的列强制使用Kilobytes为单位;110表示,数据显示每隔1秒刷新一次,共显示10次。
# iostat -x 1 10Linux2.6.18-92.el5xen02/03/2009avg-cpu: %user%nice %system%iowait %steal%idle0.004.82 39.540.0754.46Device:rrqm/swrqm/sr/sw/srsec/s wsec/s avgrq-sz avgqu-sz await svctm %utilsda0.003.50 0.40 2.5048.0018.480.000.970.970.28sdb0.000.00 0.00 0.000.000.000.000.000.000.000.000.000.00 0.00 0.000.000.000.000.000.000.000.00sdd0.000.00 0.00 0.000.000.000.000.000.000.00sde0.000.10 0.30 0.202.402.409.600.001.601.600.08sdf17.400.50102.00 0.20 12095.205.60118.400.706.812.09 21.36 sdg232.401.90379.70 0.50 76451.2019.20 201.134.9413.782.45 93.16rrqm/s: 每秒进行merge 的读操作数目。
即delta(rmerge)/swrqm/s: 每秒进行merge 的写操作数目。
Windows CMD命令中的系统性能监控方法

Windows CMD命令中的系统性能监控方法在Windows操作系统中,CMD命令是一种非常重要的工具,它可以帮助我们完成许多任务。
除了常见的文件操作和网络配置之外,CMD命令还可以用于系统性能监控。
本文将介绍一些常用的CMD命令,帮助读者了解如何使用CMD命令来监控系统的性能。
1. 查看系统信息首先,我们可以使用"systeminfo"命令来查看系统的基本信息。
该命令可以显示操作系统的版本、安装日期、计算机名称、处理器信息等。
通过查看系统信息,我们可以了解系统的一般情况,为后续的性能监控做好准备。
2. 监控CPU使用率要监控系统的CPU使用率,可以使用"wmic cpu get loadpercentage"命令。
该命令会显示当前CPU的使用率百分比。
如果CPU使用率较高,可能意味着有一些应用程序或进程正在占用大量的CPU资源,需要进一步调查和处理。
3. 查看内存使用情况内存是计算机系统中的重要组成部分,了解内存的使用情况对于系统性能的监控至关重要。
使用命令"wmic OS get FreePhysicalMemory"可以查看系统当前可用的物理内存大小。
此外,使用"wmic OS get TotalVisibleMemorySize"命令可以查看系统总的可见内存大小。
通过比较这两个值,我们可以计算出系统当前的内存使用率。
4. 监控磁盘空间磁盘空间的监控对于系统的正常运行至关重要。
通过使用命令"wmic logicaldisk get size,freespace,caption",我们可以查看系统中各个磁盘分区的总空间、可用空间以及分区的标识。
通过比较总空间和可用空间,我们可以计算出磁盘的使用率,从而判断是否需要进行磁盘清理或者扩容操作。
5. 监控网络连接网络连接的监控可以帮助我们了解系统的网络状况。
使用Windows CMD命令进行系统性能监控的实用方法
使用Windows CMD命令进行系统性能监控的实用方法在日常使用电脑的过程中,我们经常会遇到系统卡顿、程序运行缓慢等问题。
为了解决这些问题,我们需要对系统的性能进行监控和分析。
Windows CMD命令是一个强大的工具,可以帮助我们实现系统性能监控。
本文将介绍一些常用的CMD命令,帮助读者了解如何使用CMD命令进行系统性能监控。
1. 查看CPU使用率CMD命令中的“tasklist”命令可以显示当前正在运行的进程列表。
通过查看进程列表,我们可以得知每个进程所占用的CPU资源。
使用以下命令可以查看CPU使用率:```tasklist```这个命令会列出所有正在运行的进程以及它们的PID(进程ID)和内存占用情况。
我们可以根据CPU占用率高低,找出可能导致系统性能下降的进程。
2. 监控内存使用情况CMD命令中的“tasklist”命令还可以显示每个进程所占用的内存资源。
使用以下命令可以查看内存使用情况:```tasklist /FI "MEMUSAGE gt 10000"```这个命令会列出内存占用超过10MB的进程。
我们可以根据内存占用情况,找出可能导致系统内存不足的进程,并采取相应的措施。
3. 监控磁盘使用情况CMD命令中的“wmic logicaldisk”命令可以显示磁盘的使用情况。
使用以下命令可以查看磁盘使用情况:```wmic logicaldisk get caption, freespace, size```这个命令会列出每个磁盘的盘符、可用空间和总空间。
我们可以根据磁盘使用情况,找出可能导致磁盘空间不足的原因,并及时进行清理或扩容。
4. 监控网络连接情况CMD命令中的“netstat”命令可以显示当前的网络连接情况。
使用以下命令可以查看网络连接情况:```netstat -ano```这个命令会列出所有正在进行的网络连接以及它们的状态和进程ID。
我们可以根据网络连接情况,找出可能导致网络延迟或连接问题的原因,并进行相应的调整。
操作系统的性能监控与分析工具
操作系统的性能监控与分析工具所有的计算机系统都需要一个可靠的性能监控和分析工具,以保证系统运行的稳定性和高效性。
在操作系统中,性能监控和分析工具对于检测系统性能瓶颈、优化系统资源分配以及及时发现和解决系统故障非常重要。
本文将介绍几种主要的操作系统性能监控与分析工具,包括系统监视器、性能分析器和追踪工具等。
一、系统监视器系统监视器是一种常用的性能监控工具,用于实时监视和记录系统资源的使用情况。
系统监视器可以监控CPU的使用率、内存的使用情况、磁盘IO、网络流量等关键指标,帮助用户全面了解系统的运行状况。
Windows操作系统自带的任务管理器就是一种简单的系统监视器。
它提供了实时的CPU、内存和磁盘使用情况的图表展示,以及进程和服务的详细信息。
在Linux系统中,常用的系统监视器包括top、htop和nmon等工具,它们提供了更丰富的性能指标和定制化的显示选项。
二、性能分析器性能分析器是一种用于深入分析和诊断系统性能问题的工具。
它可以帮助用户找到系统性能瓶颈,并提供优化建议。
性能分析器通常可以分析CPU的使用情况、内存泄漏、磁盘IO性能、网络延迟等问题。
在Windows系统中,常用的性能分析器包括Windows Performance Monitor和Windows Performance Toolkit。
它们可以生成系统的性能报告,包括CPU利用率、内存使用情况、进程信息等。
对于Linux系统,perf和gprof是常用的性能分析工具,它们可以分析CPU使用情况、函数调用关系等。
三、追踪工具追踪工具是一种用于跟踪和记录系统运行轨迹的工具。
它可以捕获和分析系统中的各种事件,包括进程调度、中断处理、系统调用等。
通过分析这些事件的顺序和时间戳,可以帮助用户定位系统的性能瓶颈和故障。
在Windows系统中,Event Tracing for Windows(ETW)是一种常用的追踪工具,它可以跟踪和记录系统的各种事件。
windows操作系统的性能监控工具――perfmon
Windows操作系统的性能监控工具――Perfmon一、概述Perfmon(Performance Monitor)是Windows自带的的性能监控工具,这个工具可监控包括CPU、内存、网络、进程、磁盘等多个对象的上百个指标。
Perfmon提供了图表化的系统性能实时监视器、性能日志和警报管理,系统的性能日志可定义为二进制文件、文本文件、SQLSERVER表记录等方式,可以很方便地使用第三方工具进行性能分析。
二、常用的性能指标系统的整体性能由许多因素决定,例如CPU利用率、CPU队列长度、磁盘空间和I/O、内存使用情况、网络流量等等。
对于实时性要求较高的系统而言,对系统关键性指标的有效监控和管理是保证系统高可用性的重要手段,因此,务必制定出明确的系统性能策略规划,并对这些性能指标进行有效的实时监控。
当关键性能指标严重偏离或者系统发生故障时,应该采取有效手段来准确定位问题引发的原因,并通过调优系统配置或改进应用程序等手段来有效提高系统的可用性。
(一)Perfmon的监控对象Perfmon提供了比较全面的系统性能指标,并且能够根据性能管理的要求订制日志内容、制定关键指标偏离时的警报措施。
《表一》列出了Perfmon可以监控的性能对象,每一个性能对象项下包含多个性能指标计数器。
表一:性能对象描述性能对象提供的信息Browser Browser performance object 由衡量通知、枚举和其他浏览器传输率的计数器组成Cache Cache performance object 包括监督文件系统缓存(物理内存上尽可能长时间的存储最近使用过的数据以便访问该数据时不需再从磁盘上读取的那一部分内存。
)的计数器。
因为应用程序只使用缓存,因此该缓存可作为应用程序I/O 操作的指示器。
当有足够内存时,缓存可增大,但当内存不足时,缓存会变得太小而无法使用。
DistributedTransactionCoordinatorMicrosoft Distributed Transaction Coordinator 性能计数器ICMP ICMP performance object 包括衡量用ICMP 协议发送和接收消息的速度的计数器。
计算机系统性能监测与调优工具
计算机系统性能监测与调优工具随着信息技术的不断发展和计算机应用的广泛普及,计算机系统性能监测与调优变得越来越重要。
为了确保计算机系统的高效稳定运行,提升用户体验,我们需要使用专业的性能监测与调优工具。
本文将介绍一些常见的计算机系统性能监测与调优工具,并介绍它们的基本原理和使用方法。
一、性能监测工具1. Task Manager(任务管理器)Task Manager是Windows操作系统自带的一款性能监测工具。
通过打开任务管理器,我们可以实时监测计算机的CPU利用率、内存使用情况、磁盘读写速度等关键指标。
此外,Task Manager还可以帮助我们终止卡死的进程,以提升系统的响应速度。
2. Resource Monitor(资源监视器)Resource Monitor也是Windows操作系统自带的一款性能监测工具。
与Task Manager相比,Resource Monitor提供了更为详细和全面的性能监测信息。
我们可以通过Resource Monitor监测CPU、内存、磁盘、网络等各个方面的性能指标,并根据需要进行调整和优化。
3. toptop是一款在Linux和Unix系统上广泛使用的性能监测工具。
通过top命令,我们可以实时查看系统中各个进程的CPU占用率、内存占用率、运行时间等信息。
top还可以根据需要进行排序和筛选,方便我们快速找到系统的性能瓶颈。
4. sarsar是System Activity Reporter的缩写,是一款用于Linux和Unix系统的系统性能监测工具。
sar可以定期收集和报告系统CPU利用率、磁盘IO、网络流量等性能数据,并生成相应的报告。
通过分析sar报告,我们可以了解系统的负载情况,及时发现和解决性能问题。
二、性能调优工具1. VMware vRealize Operations(vROps)vROps是一款针对虚拟化环境的性能监测与调优工具。
它可以监测和分析虚拟机的性能指标,帮助管理员及时发现虚拟机中的性能问题,并提供相应的优化建议。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
windows下如何查看磁盘IO性能2011-07-18 14:22:32| 分类:Windows | 标签:磁盘io |字号大中小订阅通常,我们很容易观察到数据库服务器的内存和CPU压力。
但是对I/O压力没有直观的判断方法。
磁盘有两个重要的参数:Seek time、Rotational latency。
正常的I/O计数为:①1000/(Seek time+R otational latency)*0.75,在此范围内属正常。
当达到85%的I/O计数以上时则基本认为已经存在I/O瓶劲。
理论情况下,磁盘的随机读计数为125、顺序读计数为225。
对于数据文件而言是随机读写,日志文件是顺序读写。
因此,数据文件建议存放于RAID5上,而日志文件存放于RAID10或RAID1中。
下面假设在有4块硬盘的RAID5中观察到的Physical D isk性能对象的部分值:Avg. D isk Queue Length 12Avg. D isk Sec/Read .035Avg. D isk Sec/Write .045Disk Reads/sec 320Disk Writes/sec 100Avg. D isk Queue Length,12/4=3,每块磁盘的平均队列建议不超过2。
Avg. D isk Sec/Read一般不要超过11~15ms。
Avg. D isk Sec/Write一般建议小于12ms。
从上面的结果,我们看到磁盘本身的I/O能力是满足我们的要求的,原因是因为有大量的请求才导致队列等待,这很可能是因为你的SQL语句导致大量的表扫描所致。
在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用几块硬盘可以满足这样的并发要求:Raid 0 -- I/Os per disk = (reads + writes) / number of disksRaid 1 -- I/Os per disk = [reads + (2 * writes)] / 2Raid 5 -- I/Os per disk = [reads + (4 * writes)] / number of disksRaid 10 -- I/Os per disk = [reads + (2 * writes)] / number of disks我们得到的结果是:(320+400)/4=180,这时你可以根据公式①来得到磁盘的正常I/O值。
假设现在正常I/O计数为125,为了达到这个结果:720/125=5.76。
就是说要用6块磁盘才能达到这样的要求。
但是上面的Disk Reads/sec和Disk Writes/sec是个很难正确估算的值。
因此只能在系统比较忙时,大概估算一个平均值,作为计算公式的依据。
另一个是你很难从客户那里得到Seek time、Rotational latency参数的值,这也只能用理论值125进行计算。
##########################################################################################前言作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关注的各方面的性能只能IO性能却是最令人头痛的一块,面对着各种生涩的参数和令人眼花缭乱的新奇的术语,再加上存储厂商的忽悠,总是让我们有种云里雾里的感觉。
本系列文章试图从基本概念开始对磁盘存储相关的各种概念进行综合归纳,让大家能够对IO性能相关的基本概念,IO性能的监控和调整有个比较全面的了解。
在这一部分里我们先舍弃各种结构复杂的存储系统,直接研究一个单独的磁盘的性能问题,藉此了解各个衡量IO系统系能的各个指标以及之间的关系。
几个基本的概念在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理。
不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条——Hard disk drive(英文)和硬盘驱动器(中文)。
读写IO(Read/Write IO)操作磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读IO操作。
单个IO操作当控制磁盘的控制器接到操作系统的读IO操作指令的时候,控制器就会给磁盘发出一个读数据的指令,并同时将要读取的数据块的地址传递给磁盘,然后磁盘会将读取到的数据传给控制器,并由控制器返回给操作系统,完成一个写IO的操作;同样的,一个写IO的操作也类似,控制器接到写的IO操作的指令和要写入的数据,并将其传递给磁盘,磁盘在数据写入完成之后将操作结果传递回控制器,再由控制器返回给操作系统,完成一个写IO的操作。
单个IO操作指的就是完成一个写IO或者是读IO的操作。
随机访问(Random Access)与连续访问(Sequential Access)随机访问指的是本次IO所给出的扇区地址和上次IO给出扇区地址相差比较大,这样的话磁头在两次IO操作之间需要作比较大的移动动作才能重新开始读/写数据。
相反的,如果当次IO 给出的扇区地址与上次IO结束的扇区地址一致或者是接近的话,那磁头就能很快的开始这次IO 操作,这样的多个IO操作称为连续访问。
因此尽管相邻的两次IO操作在同一时刻发出,但如果它们的请求的扇区地址相差很大的话也只能称为随机访问,而非连续访问。
顺序IO模式(Queue Mode)/并发IO模式(Burst Mode)磁盘控制器可能会一次对磁盘组发出一连串的IO命令,如果磁盘组一次只能执行一个IO 命令时称为顺序IO;当磁盘组能同时执行多个IO命令时,称为并发I O。
并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一个IO命令。
单个IO的大小(IO Chunk Size)熟悉数据库的人都会有这么一个概念,那就是数据库存储有个基本的块大小(Block Size),不管是SQL Server还是Oracle,默认的块大小都是8KB,就是数据库每次读写都是以8k为单位的。
那么对于数据库应用发出的固定8k大小的单次读写到了写磁盘这个层面会是怎么样的呢,就是对于读写磁盘来说单个IO操作操作数据的大小是多少呢,是不是也是一个固定的值?答案是不确定。
首先操作系统为了提高IO的性能而引入了文件系统缓存(File System Cache),系统会根据请求数据的情况将多个来自IO 的请求先放在缓存里面,然后再一次性的提交给磁盘,也就是说对于数据库发出的多个8K数据块的读操作有可能放在一个磁盘读IO里就处理了。
还有对于有些存储系统也是提供了缓存(Cache)的,接收到操作系统的IO请求之后也是会将多个操作系统的IO请求合并成一个来处理。
不管是操作系统层面的缓存还是磁盘控制器层面的缓存,目的都只有一个,提高数据读写的效率。
因此每次单独的IO操作大小都是不一样的,它主要取决于系统对于数据读写效率的判断。
当一次IO操作大小比较小的时候我们成为小的IO操作,比如说1K,4K,8K这样的;当一次IO 操作的数据量比较的的时候称为大IO操作,比如说32K,64K甚至更大。
在我们说到块大小(Block Size)的时候通常我们会接触到多个类似的概念,像我们上面提到的那个在数据库里面的数据最小的管理单位,Oralce称之为块(Block),大小一般为8K,SQL Server称之为页(Page),一般大小也为8k。
在文件系统里面我们也能碰到一个文件系统的块,在现在很多的Linux系统中都是4K(通过/usr/bin/time -v可以看到),它的作用其实跟数据库里面的块/页是一样的,都是为了方便数据的管理。
但是说到单次IO的大小,跟这些块的大小都是没有直接关系的,在英文里单次IO 大小通常被称为是IO Chunk Size,不会说成是IO Block Size的。
IOPS(IO per Second)IOPS,IO系统每秒所执行IO操作的次数,是一个重要的用来衡量系统IO能力的一个参数。
对于单个磁盘组成的IO系统来说,计算它的IOPS不是一件很难的事情,只要我们知道了系统完成一次IO所需要的时间的话我们就能推算出系统IOPS来。
现在我们就来推算一下磁盘的IOPS,假设磁盘的转速(Rotational Speed)为15K RPM,平均寻道时间为5ms,最大传输速率为40MB/s(这里将读写速度视为一样,实际会差别比较大)。
对于磁盘来说一个完整的IO操作是这样进行的:当控制器对磁盘发出一个IO操作命令的时候,磁盘的驱动臂(Actuator Arm)带读写磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻址(Seeking),对应消耗的时间被称为寻址时间(Seek Time);但是找到对应磁道还不能马上读取数据,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay);接下来就随着盘片的旋转,磁头不断的读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time)。
完成这三个步骤之后一次IO操作也就完成了。
在我们看硬盘厂商的宣传单的时候我们经常能看到3个参数,分别是平均寻址时间、盘片旋转速度以及最大传送速度,这三个参数就可以提供给我们计算上述三个步骤的时间。
第一个寻址时间,考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时间,这里就采用当前最多的10krmp硬盘的5ms。
第二个旋转延时,和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时,对于10krpm的磁盘就是(60s/15k)*(1/2) = 2ms。
第三个传送时间,磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。