Articles of io

如何优化Windows文件caching,以便刷新文件更快?

我有一台第三方面向对象数据库服务器,运行在具有24 GB RAM的Windows Server 2003 x64机器上。 除了一些系统进程和监视工具之外,数据库服务器是在这台机器上运行的唯一的东西。 我打开了10〜130GB和1〜5GB的数据库文件,后者是最常访问的,是给我的问题。 每当数据库服务器刷新这个数据库文件,似乎需要永远完成。 因为一旦数据写入磁盘,DBMS将放弃其事务日志,因此必须等待刷新完成。 我在Process Monitor中查看了IO文件,看到在正常操作之前,在冲刷之前,有很多缓冲写入(通常是128字节,有时多一点)随机的文件偏移量。 这是可以预料到的,因为小数据块以不可预测的模式添加到数据库中并在数据库中更新。 当事务日志已满并发生刷新时,有大约8000次写入4K的倍数(相关计算机上的页面大小),在我分析的一个实例中总计大约35 MB。 刷新大约需要12秒钟,数据库服务器挂起。 我们的存储人员告诉我,每次写入1.5ms(12秒除以8000次写入)就是SAN的正常性能,没有任何事情可以加快速度。 我已经读过Windows Internals 4中文件caching的工作方式,它提到cachingpipe理器会尝试在后台线程上定期写脏页面到磁盘,即使应用程序没有请求刷新(懒惰的作者) 。 有什么办法可以使页面更快地写入磁盘,所以当应用程序调用FlushFileBuffers时,应用程序只能等待写入磁盘,只剩下一些脏页了? 本书还提到,cachingpipe理器中只有一个给定文件的副本。 这是否意味着我可以通过在单独的进程中打开相同的文件并定期调用FlushFileBuffers来触发刷新,因此当数据库服务器请求刷新时再次刷新会更less? 还有其他的操作或文件系统参数,我应该看看? 我听到的一个build议是增加文件系统中的页面大小,因为这样可以通过增加每个IO写入SAN的字节数来提高吞吐量。 由于在刷新过程中保存的页面是非连续的,所以我怀疑这会做什么,对不对?

量化分区错位的影响

我在NFS服务器上遇到一些重大的性能问题。 我一直在读分区alignment,我想我有我的分区错位。 我找不到任何能够告诉我如何实际量化错误分区的影响的东西。 我发现的一些一般信息表明,性能损失可能相当高(超过60%),而其他人则认为这是微不足道的。 我想要做的是确定分区alignment是否是该服务器性能问题的一个因素; 如果是的话,到什么程度? 所以我会把我的信息放在这里,希望社区能够确认我的分区是否确实是错误的,如果是这样的话,请帮我把性能成本计算在内。 服务器是具有双E5620 CPU和8 GB RAM的戴尔R510。 有八个15k 2.5“600 GB硬盘(Seagate ST3600057SS),configuration为硬件RAID-6,带有一个热备份。 RAID控制器是一个戴尔PERC H700瓦特/ 512MBcaching(Linux认为这是一个LSI MegaSAS 9260)。 OS是CentOS 5.6,主目录分区是ext3,选项“rw,data = journal,usrquota”。 我已经将HW RAIDconfiguration为向操作系统提供两个虚拟磁盘:用于操作系统(启动,根和交换分区)的/ dev / sda和用于大型NFS共享的/ dev / sdb: [root@lnxutil1 ~]# parted -s /dev/sda unit s print Model: DELL PERC H700 (scsi) Disk /dev/sda: 134217599s Sector size (logical/physical): 512B/512B Partition Table: msdos […]

什么是snmp mib获取NFS IO计数器?

我可以使用下面的snmp MIB获取本地磁盘I / O请求和读/写字节: SNMP table: UCD-DISKIO-MIB::diskIOTable diskIOIndex diskIODevice diskIONRead diskIONWritten diskIOReads diskIOWrites diskIOLA1 diskIOLA5 diskIOLA15 diskIONReadX diskIONWrittenX 25 sda 845276160 2882477056 576632 42597061 ? ? ? 5140243456 883350772736 但是我也想获得在NFS上执行的读写操作的数量和读写字节的数量。 我可以从iostat和sar获得这些细节。 但是如何在snmp中获得相同的结果。 有没有标准的MIB? 还是我需要使用自定义的扩展脚本? 或者NFS的其他任何统计数据来判断大多数IO是在NFS上发生的,而不是本地磁盘,所以可能会有延迟。 我发现相关统计数据的原始数据可以从/ proc / self / mountstats获得: device mynfsserver:/nfs_share mounted on /mymount with fstype nfs statvers=1.0 opts: rw,vers=3,rsize=32768,wsize=32768,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.135.8.219,mountvers=3,mountport=635,mountproto=udp,local_lock=all age: 7184080 caps: […]

我是否需要在虚拟服务器上创build多个文件系统来提高I / O性能?

我想在虚拟服务器上安装Oracle。 我真的不知道背后的技术,我的公司给了我一个虚拟服务器与多个(虚拟)磁盘。 我有可能将这些磁盘分成多个逻辑卷来分区我的数据文件。 但是我想知道如果I / O性能更好,是否真的有用? 如果我的服务器不是虚拟的,并且有多个硬盘,那么毫无疑问,我的数据文件的分配会提高I / O性能。 但是虚拟磁盘呢?

通过wmi监视磁盘I / O

我正在使用WMI来监视Windows Server 2003和Windows Server 2008主机。 我得到了所有我想要的信息,但磁盘I / O性能。 我试过为“AvgDiskQueueLength”查询“Win32_PerfFormattedData_PerfDisk_LogicalDisk”,但我总是得到“没有密钥”的结果。 WMI服务正在两个系统上运行,我可以使用wbemtest连接到它,没有任何错误。 我错过了什么,或者我做错了什么?

KVM访客IO性能较差

我有一个DOM0,包含两个configuration为软件RAID1的3TB硬盘驱动器,也有16GB的内存。 DOM0的Linux发行版是CentOS 6.3,pipe理程序是libvirtpipe理的KVM。 DOM0和DOMU之间的性能下降,DOMU写入吞吐量约为DOM0的40%。 我使用以下简单的dd命令testing了性能: dd bs = 1M count = 1024 oflag = direct if = / dev / zero of = testb conv = fdatasync 我为DOM0configuration了DEADLINE电梯,为DOMUconfiguration了NOOP电梯,而这又是一个Debian Unstable: Linux vm1 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux root@vm1:/home/paris# cat /etc/debian_version 6.0.6 至于lib​​virt中的DOMUconfiguration,下面是其中一个虚拟驱动器的XML片段,它们实际上是纯原始的崩溃文件: <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none' io='native'/> […]

戴尔T410有限的I / O性能

我们有less量的戴尔T410和T710系统。 每个都有一个带有6个SATAII磁盘,1x160GB操作系统和5×3 TB数据磁盘的戴尔SAS 6iR控制器。 我们一直都有磁盘访问速度问题,每个磁盘单独给出的速度不超过100MB / s,但是在负载下速度很慢。 我们被告知这是我们的磁盘控制器。 试图用H700replace其中一个,看到差别不大,也许5%的速度增加。 相信自己必须是SAS – > SAS背板 – > SATAII磁盘。 但是现在我们正试图在系统之间设置ceph集群,并加快我们用Highpoint 620 PCI-e 1X卡购买OCZ Vertex 4 SDD的日志文件,因为SAS全部采用SAS背板。 这一切都很好。 但是在testing中,我已经尝试了dd = / dev / zero bs = 4k count = 1024k = / mnt / test1.img,其中SSD是用EXT4文件系统安装的。 我有'iostat -dmx 1'在另一个窗口打开。 我看到写入完成,报告写入磁盘390MB / s,但这是与磁盘caching。 在Iostat中,我看到它从我们的SATAII磁盘上看到的同样速度的100-120MB /秒的磁盘上! 在另一个方向尝试相同的testing,'echo 3> / proc / sys […]

在Linux中,在有限的资源内运行一个进程

有没有一种方法可以在严格限制的资源(即cpu,内存,I / O)内运行一个进程(例如ls,du,find ..等),除了使用nice&ionice,因为我没有find它们在我的情况下足够有效。 我有一个生产服务器,有很多文件目录,需要被删除,移动,得到他们的总大小..等

Linux – KVM – 非常慢的磁盘io

我的新服务器的I / O性能很低。 我谷歌search,并尝试我能想象的一切。 首先,这里是硬件组件: AMD Opteron(TM)处理器6344 4倍希捷ST3000VX000 目前运行在一个软件RAID5上。 主机吞吐量: # dd if=/dev/zero of=testfile bs=64k count=16k conv=fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 4.44095 s, 242 MB/s 访客系统的当前吞吐量: # dd if=/dev/zero of=testfile bs=64k count=16k conv=fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 94.8643 s, 11.3 MB/s […]

堆叠站点上的DRBD磁盘drbd10上的I / O很高

我们有4个Redhat盒Dell PowerEdge R630(比如a,b,c,d),它们具有以下操作系统/软件包。 RedHat EL 6.5 MySql Enterprise 5.6 DRBD 8.4 Corosync 1.4.7 我们已经设置了4路堆叠的drbd资源,如下所示: 群集群集-1:服务器a和b互相连接本地局域网群集群集-2:服务器c和d 群集群集1和群集2通过虚拟IP通过堆叠的drbd连接,是不同数据中心的一部分。 drbd0磁盘已在每个服务器1GB本地创build,并且还连接到drbd10。 整体设置由4层组成:Tomcat前端应用程序 – > rabbitmq – > memcache – > mysql / drbd 我们正在经历很高的磁盘IO,甚至到现在还没有活动。 但交通/活动会在几个星期内增加,所以我们担心会对业绩造成非常不好的影响。 I / O Useage仅在堆叠的站点(有时为90%及以上)上走高。 二级站点没有这个问题。当应用程序是理想的时候使用率会很高。 所以,请分享一些build议/调整指导方针,以帮助我们解决问题。 resource clusterdb { protocol C; handlers { pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notifyemergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; pri-lost-after-sb […]