社区
Linux_Kernel
帖子详情
页高速缓存 address_space的问题
小魔菇
2010-01-13 03:22:58
每个inode都有一个address_space对象?由该address_space来维护该inode所拥有的所有页缓存?
不知道我的理解是不是对的
如果是对的 那么每个inode都需要一个address_space对象,每个inode维护一个基树,开销岂不是很大?
还是系统维护一个大的基树,然后每个inode的基树都挂在上面?
请高手指点。
...全文
267
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
本文深入探讨Linux中的
页
高速缓存
机制,重点分析
address
_
space
对象在管理
页
高速缓存
中的作用,以及其与inode和page之间的关联。通过基树结构加速大文件的
页
查找,介绍了
页
高速缓存
的设计原理和实现细节。
【
页
高速缓存
】
address
_
space
操作函数分析
本文深入分析了Linux内核中基于radix tree的
页
高速缓存
操作,包括查找、增加、删除和更新
页
的功能。查找
页
通过find_get_page()等函数实现,增加
页
使用add_to_page_cache(),删除
页
由remove_from_page_cache()处理,更新
页
通过read_cache_page()确保
高速缓存
中包含最新
页
。此外,还讨论了
页
高速缓存
的标记系统,用于快速定位脏
页
和写回
页
。
页
高速缓存
(page cache学习)
本文档详细介绍了Linux内核的
页
高速缓存
(Page Cache),包括其重要性、工作原理、
address
_
space
对象及其方法,如writepage、readpage等,以及
页
高速缓存
的基树结构和
页
的分配与管理。通过学习,可以理解
页
高速缓存
在快速定位数据
页
和优化磁盘I/O方面的作用。
磁盘
高速缓存
本文详细介绍了Linux内核的磁盘
高速缓存
,特别是
页
高速缓存
(page cache),它是系统性能的关键。
页
高速缓存
用于存储文件、目录和其他数据,减少对磁盘的访问。通过
address
_
space
对象管理和操作
页
,使用基树(radix tree)实现高效查找。文章还探讨了
address
_
space
对象的结构和操作方法,以及如何通过基树快速定位
页
。
页
高速缓存
本文围绕Linux操作系统的
页
高速缓存
展开,介绍了
address
_
space
对象、基树等核心数据结构,阐述了
页
高速缓存
的处理函数,如查找、增加、删除和更新
页
的操作。还讲述了脏
页
写入磁盘的机制,包括pdflush内核线程、搜索脏
页
和回写陈旧脏
页
等内容,以及sync()、fsync()和fdatasync()系统调用。
Linux_Kernel
4,469
社区成员
17,458
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章