多进程写文件速度问题

yikun 2005-10-28 09:10:07
linux服务器3系统,起了1000个进程,每个进程的工作就是循环打开100个文件不关闭写入5个字节,然后再循环关闭。

下面列举以下情况
1 1000*100个文件写同一个目录下,例如 /data/目录所有进程完成需要600多秒有时候更多
2 1000*100个文件写到1000个目录,进程同时建立目录,即100个文件对应一个目录,例如进程1写到/data/1/目录 所有进程完成时间仅需要20秒
3 1000*100个文件写1000*100个目录,进程同时建立目录 例如进程1地一个文件写入/data/1/1/目录,所有程序完成时间也要600多秒。

请问情况2为什么只用20秒这么少?盘存储文件的方式究竟是怎样的,例如存满了一块再存。。。。,哪里可以获得相关资料?
...全文
179 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
YanDong_8212 2005-11-14
  • 打赏
  • 举报
回复
学习!
yikun 2005-11-14
  • 打赏
  • 举报
回复
谁给介绍一下磁盘的读写过程?
例如:创建一个目录,在目录下创建文件,写入3字节。这个过程磁头有没有动?如果超过512字节.他写到下一个什么快,如果这个块被占用?...

读过程?
yikun 2005-10-31
  • 打赏
  • 举报
回复
其他高人呢?
chairou 2005-10-30
  • 打赏
  • 举报
回复
Linux的FS应该是用m+树来实现的.
1.写在同一个目录下,会导致m+树的某个节点的叶子节点狂多,同一父节点的叶子是需要用类似轮循的方式查找的,故慢.

2.一千个目录来平均分掉那些文件(叶子),效率当然高了,每个叶子的轮循次数大大减少.

3.如果建立和文件一样多的目录的话,由于UNIX下目录和文件都是同等对待的,也就是你花了和第一种情况大致的时间来建立这些目录,并且还要花额外的时间来把你的文件放在这些目录下面

yyy790601 2005-10-30
  • 打赏
  • 举报
回复
学习。
rabbitweng 2005-10-29
  • 打赏
  • 举报
回复
我想应该也是加锁的问题
x86 2005-10-28
  • 打赏
  • 举报
回复
是不是写目录文件的时候需要加锁?这样的话可能就比较慢了。

由于不应该同时写一个目录文件,所以我觉得应该加锁。可以看看kernel关于创建文件的实现源码,可能是open系统调用。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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