[深入理解文件系统之六]:Directory Name Lookup Cache
2017-03-06 13:55
323 查看
作为BSD对文件系统最主要的三大贡献之一,Directory Name Lookup Cache 极大地提高了文件路径名解析的速度。那么什么是路径名解析和Directory Name Lookup Cache呢?
路径名解析
考虑到现代文件系统中对多个文件系统的支持,可能存在一个绝对路径名,穿越了多个文件系统层的情况,因此现在没有办法像之前unix文件系统样用路径名之间找对应的inode/vnode节点,而应该逐层调用各自文件系统对应的vop_lookup()操作,伪码如下:
Directory Name Lookup Cache)
基于局部性原理,常用的文件可能会常常打开,这样就需要反复执行上面的程序,根据路径名找到vnode节点,为了避免这里带来的重复操作,DNLC(Directory Name Lookup Cache))建立起来了路径名和vnode的映射关系。更进一步,为了避免反复冗长的路径名解析,基于parent
vnode和路径名生成了hash值,
然后建立这个hash值和当前vnode的映射关系。整个DNLC的数据结构和机制如下图所示:
![](https://s4.51cto.com/wyfs02/M01/8E/4D/wKioL1i8986z-ycbAABsjyMGzBo359.png)
虽然最早在刚引入DNLC之后,在大量文件(500K~1000K)打开和关闭测试的情况下,命中率能够达到85%。但现在的DNLC的命中率应该可以达到90%以上,如果达不到,可以ncsize和最大进程数和用户数进行调节。
路径名解析
考虑到现代文件系统中对多个文件系统的支持,可能存在一个绝对路径名,穿越了多个文件系统层的情况,因此现在没有办法像之前unix文件系统样用路径名之间找对应的inode/vnode节点,而应该逐层调用各自文件系统对应的vop_lookup()操作,伪码如下:
if (absolute_pathname) { dirvp = rootdir } else { dirvp = u.u_cdir } do { name = extract string from pathname newvp = VOP_LOOKUP(dirvp, name, ...) if not last component { dirvp = newvp } }until basename of pathname reached return newvpDNLC (
Directory Name Lookup Cache)
基于局部性原理,常用的文件可能会常常打开,这样就需要反复执行上面的程序,根据路径名找到vnode节点,为了避免这里带来的重复操作,DNLC(Directory Name Lookup Cache))建立起来了路径名和vnode的映射关系。更进一步,为了避免反复冗长的路径名解析,基于parent
vnode和路径名生成了hash值,
然后建立这个hash值和当前vnode的映射关系。整个DNLC的数据结构和机制如下图所示:
![](https://s4.51cto.com/wyfs02/M01/8E/4D/wKioL1i8986z-ycbAABsjyMGzBo359.png)
虽然最早在刚引入DNLC之后,在大量文件(500K~1000K)打开和关闭测试的情况下,命中率能够达到85%。但现在的DNLC的命中率应该可以达到90%以上,如果达不到,可以ncsize和最大进程数和用户数进行调节。
相关文章推荐
- 深入理解文件系统——磁盘的物理组织
- 深入理解linux系统下proc文件系统内容
- 深入理解Lustre文件系统-第5篇 LDLM:锁管理者
- 深入理解Lustre文件系统-第7篇 MDC和Lustre元数据
- 深入理解linux系统下proc文件系统内容
- 深入理解Lustre文件系统-第9篇 Portal RPC
- 深入理解Lustre文件系统-第6篇 OST和obdfilter
- 深入理解Lustre文件系统-第4篇 LOV和OSC
- 深入理解Lustre文件系统-第7篇 MDC和Lustre元数据
- 深入理解linux系统下proc文件系统内容
- 深入理解Lustre文件系统-第2篇 体系结构的模块视图
- 深入理解linux系统下proc文件系统内容
- 深入理解Lustre文件系统-第6篇 OST和obdfilter
- 深入理解linux系统下proc文件系统内容
- 深入理解linux系统下proc文件系统内容
- 深入理解Lustre文件系统-第1篇 前言
- 深入理解Lustre文件系统-第2篇 体系结构的模块视图
- 深入理解Lustre文件系统-第8篇 基础结构支持
- 深入理解Lustre文件系统-第3篇 lustre lite
- 深入理解Lustre文件系统-第5篇 LDLM:锁管理者