每秒40MB为什么在写硬盘时会有问题,急,明天要交货了。

freeinsky 2005-04-20 06:59:33
从采集卡,以每秒20次,每次2MB的数据读入,要实时写入硬盘中,
机子配置
2G内存
2个SCSI磁盘RAID 0阵列

我采用两个方案都没有通过,
1。两个工程线程,(1个是采集线程,另一个当收4次时就唤醒存储线程用writefile写入,前面1000多次没有问题,可最后就会出现1784的错误了。)

2。进行文件映射,也出现同样的问题,

请问大伙是如何处理这样的问题的。
...全文
246 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2005-04-24
  • 打赏
  • 举报
回复
你的内存足够了。你要自己管理内存,使用尽可能大的缓存。用底层的windows函数写入数据不要用库函数来写盘。
zry000 2005-04-23
  • 打赏
  • 举报
回复
建议加大内存后多开辟一块区域做缓存,这样也太虐待硬盘了。
louifox 2005-04-23
  • 打赏
  • 举报
回复
直接写扇区
freeinsky 2005-04-23
  • 打赏
  • 举报
回复
最后测试出来的硬盘能达到的数据是 120MB/S

我直接开一下512MB的内存,每32MB时写入一次数据,基本上都对
只是有时会出现一点延时,

请问大伙在写数据时,一般是如何处理的.我用的是writefile同步模式下操作的.
objectman 2005-04-21
  • 打赏
  • 举报
回复
和我以前做过的一样,不过没你这么快。
文件writefile后还要flush啊。
最好做两个线程,一个不停的向队列头中加,一个从队列尾部删。
内存实在不行再大些
如果还不行就没办法了,就得通过硬件实现了,目前的设备够呛。
Anikan 2005-04-21
  • 打赏
  • 举报
回复
看看你的缓冲区有没有出现问题。有可能是写盘还没有完成,新到的数据把缓冲区刷新了。
Featured 2005-04-21
  • 打赏
  • 举报
回复
楼主用的就是SCSI的RAID0,
40MBps肯定不成问题
而且SCSI的硬盘也不回跟线程调度发生冲突问题。(SCSI 盘的读写不用CPU的)

写到一千多次的时候出毛病,
也就是2G多的时候出毛病,
情况却像极了写入速度太快硬件跟不上。

试着拔掉一根内存,看看出错时的写入次数有何变化
uoyevoli 2005-04-21
  • 打赏
  • 举报
回复
这么快?搞什么用的??看来真的是因为硬盘受不了的原因。帮你顶一把。
leechiyang 2005-04-21
  • 打赏
  • 举报
回复
50秒要写入2G的数据,真的就是很大的考验。
设备是为客户工作的不是为程序员工作的。
还是优化优化吧。:p
leechiyang 2005-04-21
  • 打赏
  • 举报
回复
采集的数据压缩一下不好吗?
  • 打赏
  • 举报
回复
1784:提供给请求操作的用户缓冲区无效。
现在的IDE硬盘很难达到这么高的要求,我觉得你解决问题的唯一方法是换一个SCSI硬盘,如果还不行,就用RAID。
我不是在开玩笑,每秒40M对硬盘是一个极大的考验。
oyljerry 2005-04-20
  • 打赏
  • 举报
回复
出错的原因?

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧