免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5646 | 回复: 16
打印 上一主题 下一主题

在Winodws上以磁盘的最大速度持续存储二进制文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-08 11:25 |只看该作者 |倒序浏览
环境是WindowsServer2008R2 64bit,Intel Core i7-940 2.93GHz,12G DDR3, 磁盘标定最高速度是300MByte/sec,做了RAID0。

每430ms从图像采集卡取得80MByte数据存入硬盘,也就是186MByte/sec。
用HALCON(一个图像处理库)的API存储能达到277MByte/sec。
可是我用fwrite, _write, WriteFile只能达到98MByte/sec, 185MByte/sec和108MByte/sec。

因为是大块二进制文件保存,不需要随机读取,我调整了WriteFile的参数,
比如用FILE_FLAG_NOBUFFERING | FILE_FLAG_WRITETHROUGH来取消库和OS的Cach。但是都达不到HALCON的速度。

请问有什么优化方法能够消除操作系统的影响,让硬盘发挥最大存储速度的方法吗?
请给点儿线索,提示。谢谢。

论坛徽章:
0
2 [报告]
发表于 2010-03-08 11:34 |只看该作者
有些数据库支持裸设备

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
3 [报告]
发表于 2010-03-08 11:43 |只看该作者
回复 1# notbusy

LZ做的对比测试,都是通过写一个大文件来测试写入速度的么?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2010-03-08 11:45 |只看该作者
先用个硬盘性能测试工具试试写入性能

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-09-23 06:20:00
5 [报告]
发表于 2010-03-08 11:54 |只看该作者
CreateFile(FILE_FLAG_NOBUFFERING | FILE_FLAG_WRITETHROUGH |FILE_FLAG_OVERLAPPED)
必须enable asynchronous i/o, 连续issue多个异步写,注意buffer按照磁盘扇区对齐,可以结合i/o
completion port来做i/o.

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-09-23 06:20:00
6 [报告]
发表于 2010-03-08 11:57 |只看该作者
看下这篇kb也许有帮助,http://support.microsoft.com/kb/156932

论坛徽章:
0
7 [报告]
发表于 2010-03-08 12:14 |只看该作者
回复 2# prolj

数据库放在另一台机器上,用于图像采集的这台机器只做采集和最基本的预处理然后放到本地硬盘。之后转移到别的机器里,做图像处理最后放入数据库。

论坛徽章:
0
8 [报告]
发表于 2010-03-08 12:17 |只看该作者
回复 3# happy_fish100

是,测试的程序很简单,malloc一块内存,70MByte,对齐到sector大小。反复执行open/write/close,写入硬盘的同一个文件。
这个方法有问题吗?有什么特别需要注意的问题吗?我是对我要做的写文件操作做了简化后写的简单的性能测试程序。

论坛徽章:
0
9 [报告]
发表于 2010-03-08 12:20 |只看该作者
回复 4# hellioncu

因为HALCON的性能基本接近硬盘标定最大吞吐速度,也满足我的性能要求,就没有再用专门的工具,工具的各个侧重点不同,有的是测试文件系统的,有的是测试缓存的,和我的SPEC并不完全一致。还有就是h2benchw的免费版不提供write测试,我也就不想多费事了。呵呵。

论坛徽章:
0
10 [报告]
发表于 2010-03-08 12:26 |只看该作者
本帖最后由 peidright 于 2010-03-08 12:29 编辑

。。。哦,不是开源的。这个api的申明是?

是不是其他的方式,影响了写入速度呢?  比如它自己实现了缓存。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP