【文件系统测试】Windows下模拟海量文件

背景:
拟根据车牌号码按照日期记录其过车信息。


测试方案:
数据存放文件夹为:“%ROOT%/passing_info_data”
以“京A12345”车牌为例,构建形如“%ROOT%/passing_info_data/京/A/1/2/3/4/5/”文件目录


模拟车牌号码数量500万
模拟数据日期跨度:45天
模拟每日随机过车记录:1000条
记录内容为:过车时间(long),过车地点(int)


模拟策略:


检查车牌文件是否存在
存在,加载之
不存在,模拟500万,并同时保存


第一步:


检查车牌目录是否存在,不存在创建之,
结果,500万成功创建
现象:win7系统下,单硬盘,扩展分区状态下,每创建2000左右文件夹,程序暂停约5秒
分析:
系统在有需要的时候预分配文件分配表空间
过程:
创建文件夹时使用 Directory.CreateDirectory("Path"),
创建系统函数创建,使用已经分配的文件分配表,达到上限后,系统加锁,新申请文件分配表空间,系统解锁
创建时操作系统预分配文件分配表,高速创建时,硬盘分配表空间快速被使用完毕
文件分配表在操作系统级保证多线程操作安全,分配时加锁


第二步:
使用华为存储存放数据,iscsi方式连接
结果,500万文件夹创建成功
现象:win2008R2下,磁盘阵列,华为,程序暂停不明显
千兆网卡连接阵列,网络带宽占用2%左右
分析:
华为阵列的数据使用了缓存+raid5机制,华为阵列本身实现文件及文件分配表的管理,效果较好


第三步:
在本机模拟创建文件并写入,500万*45天 = 22500万 文件,win2008R2 32线程全速写入,效率低,同样遇到文件分配表问题
侧面:searcheverything 软件的文件列表数据库及内存占用达到了10G



其他:

全部检测文件夹是否存在:32线程,220秒

已知文件名,检测是否存在,检测时间暂时推论与硬盘上文件数量关系不大,O(1)


需要进行的下一步学习,

如何高效利用磁盘的文件快速定位

如何协调硬盘的最小读取单元与业务数据之间的关系

如何合理有效的使用华为存储的缓存机制

硬盘本身的二级缓存是否能够有效利用

erlang的dets中最大使用2G单个文件

数据如何组织,能充分利用硬盘最小读取单元,获取尽可能多的有效数据

硬盘数据的组织,需要特定的数据结构,

STSDb中实现了瀑布树结果,读写效率客观,如何利用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值