社区
Linux_Kernel
帖子详情
页高速缓存 address_space的问题
小魔菇
2010-01-13 03:22:58
每个inode都有一个address_space对象?由该address_space来维护该inode所拥有的所有页缓存?
不知道我的理解是不是对的
如果是对的 那么每个inode都需要一个address_space对象,每个inode维护一个基树,开销岂不是很大?
还是系统维护一个大的基树,然后每个inode的基树都挂在上面?
请高手指点。
...全文
198
5
打赏
收藏
页高速缓存 address_space的问题
每个inode都有一个address_space对象?由该address_space来维护该inode所拥有的所有页缓存? 不知道我的理解是不是对的 如果是对的 那么每个inode都需要一个address_space对象,每个inode维护一个基树,开销岂不是很大? 还是系统维护一个大的基树,然后每个inode的基树都挂在上面? 请高手指点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小魔菇
2010-01-13
打赏
举报
回复
突然又想到了一个问题
基树的节点上挂的是页的描述符
那页存放在哪儿呢?
应该存放在专门一个缓冲区里面对吧 基树只是一个用来快速查找的工具
ULK2上面也没怎么说清楚 或者是我没看清楚吧 呵呵
小魔菇
2010-01-13
打赏
举报
回复
[Quote=引用 3 楼 deep_pro 的回复:]
lkd2上说
2.6以前的内核,页高速缓存是通过一个维护了系统所有的全局散列表进行检索,效率很低,
因为要用锁保护这么大的一片全局散列表,锁争用要更严重,同时散列表太大,但其实只需要跟当前文件相关的页,如果查找失败更糟糕,意味着需要遍历指定散列键值对应的整个链表。
这样看的话,“还是系统维护一个大的基树,然后每个inode的基树都挂在上面? ”是不会被使用的方法
我不懂这个基树的算法有多牛x,至少比以前的散列表好
如果文件很小的话,基树也会很小,查找起来也更迅速
在linux中有没有对小文件的页缓冲的机制?
---------------
不知道啊
[/Quote]
也对啊
如果只用一棵树的话 文件过多 这棵树就太大了
还是分开比较好 速度快一些
是不是有点空间换时间的感觉 呵呵
deep_pro
2010-01-13
打赏
举报
回复
lkd2上说
2.6以前的内核,页高速缓存是通过一个维护了系统所有的全局散列表进行检索,效率很低,
因为要用锁保护这么大的一片全局散列表,锁争用要更严重,同时散列表太大,但其实只需要跟当前文件相关的页,如果查找失败更糟糕,意味着需要遍历指定散列键值对应的整个链表。
这样看的话,“还是系统维护一个大的基树,然后每个inode的基树都挂在上面? ”是不会被使用的方法
我不懂这个基树的算法有多牛x,至少比以前的散列表好
如果文件很小的话,基树也会很小,查找起来也更迅速
在linux中有没有对小文件的页缓冲的机制?
---------------
不知道啊
小魔菇
2010-01-13
打赏
举报
回复
但是对小文件来说 每个文件都维护一个基树 得不偿失哦
在linux中有没有对小文件的页缓冲的机制?
deep_pro
2010-01-13
打赏
举报
回复
lz的理解很对
inode都有一个address_space对象,见inode的结构体定义,由该address_space来维护该inode所拥有的所有页缓存。
确实是每一个inode维护一个基树,这样在一个巨大文件中可以实现缓存页快速寻找
linux文件系统的
页
高速缓存
page cache中的核心数据结构
address
_
space
这篇博客以
address
_
space
对象为切入点,分析文件系统的
页
高速缓存
。 1背景 在文件系统中,内存中存在着dentry和inode结构,其中其分别的作用可以见我另一篇博客《dentry与inode》。由于这些结构要反复使用,所以...
页
缓存page cache和地址空间
address
_
space
它是文件系统cache中占比最大的部分,也是对文件系统读写性能提升最大的部分,而地址空间
address
_
space
则是page cache的核心管理结构。 2 struct
address
_
space
主要成员变量 struct
address
_
space
{ s
页
高速缓存
页
高速缓存
是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保存在RAM中,以便对那些数据的进一步访问不用再访问磁盘而能尽快的到满足。 因为对同一磁盘数据的反复访问频繁发生,所以磁盘
高速缓存
对系统...
linux内核中的
address
_
space
结构解析
struct
address
_
space
*mapping;表示该
页
所在地址空间描述结构指针,用于内容为文件的
页
帧 (1)如果page->mapping等于0,说明该
页
属于交换告诉缓存swap cache (2)如果page->mapping不等于0,但第0位为0,...
计算机底层知识拾遗(六)理解
页
缓存page cache和地址空间
address
_
space
在这篇计算机底层知识拾遗(五)理解块IO层 中讲了块缓存buffer cache块缓存,这篇说说
页
缓存page cache以及相关的地址空间
address
_
space
的要点。 在Linux 2.4内核中块缓存buffer cache和
页
缓存page cache是并存的,...
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章