- 论坛徽章:
- 0
|
对于linux中的多种“高速缓存”的概念一直没有弄透,希望和大家探讨.
ulk 3rd
目前的理解:
1. 硬件高速缓存--》就是cache了,没有什么疑问;
2. 内存管理中出现的:
(1). 每cpu高速缓存;
放在内存管理区描述符中的pageset字段中;
(2). 空闲slab对象的本地高速缓存;
(3). 共享的本地高速缓存;
问题1:(1), (2), (3)在用途上有什么区别,或者说他们是什么时候起作用的???
(4). 普通和专用高速缓存;
专用就是像索引节点高速缓存一类的由内核其他模块使用的高速缓存,而普通就是相对而言的,
问题2:内核中是不是只有一个普通高速缓存:kmem_cache???
3. 文件系统中讲到的
(1). 页高速缓存;
问题3:是不是所有的高速缓存都是从此而来;???
(2). 页目录项高速缓存;
(3). 索引节点高速缓存;
(2), (3)应该都是属于slab中的专用高速缓存,特定类型对象的高速缓存;
(4). 缓冲区高速缓存
逻辑上是磁盘内容,只是在内存中,现在已经不存在,由于效率原因不再单独分配块缓冲区,存放在缓冲区页,属于页高速缓存;
问题4:所有的高速缓存,他们都是从页面高速缓存获取的?它们的获取是否存在一个层次关系?
问题5: 我想知道内存中到底有多少物理页面是用来作为高速缓存的,是否仅仅遍历kmem_cache开始的高速缓存描述符链表就可以呢?
|
|