zoukankan      html  css  js  c++  java
  • 内核多级多级hash在内核中应用: 变种radix tree在page cache中的应用

    时间紧张,先记一笔,后续优化与完善。

        考参:

        radix tree in kernel : Trees I: Radix trees

        

        

        http://lwn.net/Articles/175432/

        


        

    一般的radix tree(注意,这不是内核顶用的radix tree哦)
    http://en.wikipedia.org/wiki/Radix_tree

        这里论讨的是变种的radix tree,请知悉.

        

        radix tree的心核想思是什么?

        

        hash的冲突处置策略是拉链.

        hash的key是整型值(址地), value是个指针, 算是个多级hash_map.

        

        多级hash的现实方法是, 整型值的前几位(1~6bit)用来做一级hash, 间中几位(7~12)用来做二级hash, 接下来的几位(13~18)来做三级hash
        每日一道理
    冰心说道:“爱在左,同情在右,走在生命的两旁,随时撒种,随时开花,将这一径长途,点缀得香花弥漫,使穿枝拂叶的行人,踏着荆棘,不觉得痛苦,有泪可落,却不是悲凉。”

        

        为什么要用多级hash? 而不是见常的一级hash?

        

        

        因为, 如果用一级hash, 内核中的hash的算法的长度是一开始就牢固的. 如果设的太小, 当page cache变大时, 冲突会变得很多. 

        如果设置的过大, 则当page cache很小时又有些糟蹋!

        

        所以, 内核应用了多级hash. 多级hash的处好时, 面临疏稀的page cache, 存储效率极高, 不糟蹋空间. 因为大部分孩子节点都是空的, 也就是说没有孩子分支. 比     举个极端的例子, 当page cache中只有一个page时, 那么radix tree只需要三个部内点结, 第一层一个点结:root, 第二层也只有一个点结, 第三层也只有一个点结!! 

        内核和多级

    文章结束给大家分享下程序员的一些笑话语录: 3G普不普及现在已经不是看终端了,而是看应用,有好的,便宜实用的应用,花1000多买个能用的智能手机应该不是什么难事。反过来说,你200元拿一个智能手机,没有好的应用,看个电影要几十元,也是没人用3G。

  • 相关阅读:
    三种方式重启NGINX 简单
    转MongoDB、HandlerSocket和MySQL性能测试及其结果分析 简单
    php ini_set post_max_size,upload_max_filesize 简单
    grep 命令 简单
    ANSI,GBK,UTF8,UTF16LE,UTF16BE 简单
    提升工作效率软件 简单
    会议记录 简单
    第一章 :zabbix监控
    第七章 :分布式监控与SNMP监控
    linux系统安装SNMP(可用)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3057416.html
Copyright © 2011-2022 走看看