工作日志管理 系统开发工作日志( 四 )


工作日志管理 系统开发工作日志


图3 JFS磁盘结构
JFS 使用基于盘区的寻址结构,连同主动的块分配策略,产生紧凑、高效、可伸缩的结构,以将文件中的逻辑偏移量映射成磁盘上的物理地址 。盘区是象一个单元那样分配给文件的相连块序列,可用一个由 <逻辑偏移量,长度,物理地址> 组成的三元组来描述 。寻址结构是一棵 B+ 树,该树由盘区描述符(上面提到的三元组)填充,根在 inode 中,键为文件中的逻辑偏移量 。
JFS 按需为磁盘 inode 动态地分配空间,同时释放不再需要的空间 。这一支持避开了在文件系统创建期间,为磁盘 inode 保留固定数量空间的传统方法,因此用户不再需要估计文件系统包含的文件和目录最大数目 。另外,这一支持使磁盘 inode 与固定磁盘位置分离 。
JFS 提供两种不同的目录组织 。第一种组织用于小目录,并且在目录的 inode 内存储目录内容 。这就不再需要不同的目录块 I/O,同时也不再需要分配不同的存储器 。最多可有 8 个项可直接存储在 inode 中,这些项不包括自己(.)和父(..)目录项,这两个项存储在 inode 中不同的区域内 。第二种组织用于较大的目录,用按名字键控的 B+ 树表示每个目录 。与传统无序的目录组织比较,它提供更快的目录查找、插入和删除能力 。
性能测试6.1 测试环境
工作日志管理 系统开发工作日志


6.2测试工具
所用的测试工具是Postmark和Bonnie++ 。Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁、大量地存取小文件 。而Bonnie++主要测试大文件的IO性能 。
6.3 测试结果分析
下面将详细分析用上述两种测试工具在各种测试参数配置下的结果 。
工作日志管理 系统开发工作日志


图4 PostMark 小文件
图 4是PostMark测试小文件的结果,其参数是文件大小50B增至1K, 同一目录下的文件数从5k至20k,事务总数为25k 。从图中我们可以看出:
1. 不论是Ext3 还是ReiserFS,在三种日志模式中,写回(writeback)最快,预定(ordered)次之,日志(journal)最慢 。
2. 在各种文件系统中,ReiserFS 的写回和预定模式是最快的,且随着文件数的增加事务处理速度下降的也很慢 。
3. Ext3在文件数较少时,事务处理速度也比较快,但当文件数超过10k后,速度就比较慢了 。
4. XFS和JFS的速度较慢,但随着文件数的增加,速度下降的比较缓慢 。
工作日志管理 系统开发工作日志


图5 PostMark 大文件
图5是PostMark测试大文件的结果,其参数是文件大小1k至16K,同一目录下的文件数从5k增至20k,事务总数为25k时的测试结果 。从图中我们可以看出:
1. 在处理大文件时,当文件数达到15k时,各种文件系统处理能力都较差 。
2. 当文件数在小于10k时,ReiserFS的写回、预定模式和EXT3的写回模式性能是比较好的 。但这两种文件系统的全日志模式都比较差 。
3. XFS文件系统的性能居中,JFS文件系统的性能最差 。
工作日志管理 系统开发工作日志


图6:Bonnie++顺序写的速率
工作日志管理 系统开发工作日志


图7:Bonnie++顺序写时CPU利用率
图6是Bonnie++对文件大小分别为1G,2G,4G顺序写的性能比较,图7是其CPU的利用率比较 。从上述两图中我们可以看出:
1. 除了Ext3和ReiserFS的Journal模式的性能较差外,其他几种模式和XFS、JFS写磁盘的速率相当 。

推荐阅读