论坛首页 Java企业应用论坛

memcached server LRU 深入分析

浏览 32541 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-12-05   最后修改:2008-12-08
tongjian 写道
补充:
晕了,本来想编辑帖子,一不小心把上边帖子引用楼主的内容删了。还是再回一个吧
两点误解的补充:
第一点首先楼主说一个slab下有多个page,我理解page数指的是某一个slab的数量。
第二点我的理解是如果还有可分配的内存,则不会覆盖1号slab的数据,如果内存没有可分配的了,则会覆盖1号slab比较旧的数据。此时你说“我的内存还有40%的时候LRU就执行了”,其实此时已经没有内存可分配了,因为这40%内存已经分配给了其他号的slab,所以1号slab的旧数据会被LRU。


还有
“Keep in mind that memcached is a cache not a database. It is fast, but not reliable storage.”
不知大家怎么理解的?



第一点得问题,没啥好说得,看memcached得数据结构吧

第二点,我说我得"我的内存还有40%的时候LRU就执行了",这个是那个场景得现象,现象不代表本质.而且问题得本质我在正文中已经说明了.

看看我的回复,
ahuaxuan 写道

一个slab会有多个page,明白不?不可能只用1m(只是预先分配1m,不是说只能使用1m,当这 1m的数据满了之后,会重新分配一个page给这个slab,一旦到达使用内存的上限就不会再分配新的page了,新数据进来会有针对该slab的 LRU,而且这个LRU只是针对该双向链表的前50个元素),看清楚文章再发言可以吗
0 请登录后投票
   发表时间:2008-12-14  
ahuaxuan 写道
tongjian 写道
补充:
晕了,本来想编辑帖子,一不小心把上边帖子引用楼主的内容删了。还是再回一个吧
两点误解的补充:
第一点首先楼主说一个slab下有多个page,我理解page数指的是某一个slab的数量。
第二点我的理解是如果还有可分配的内存,则不会覆盖1号slab的数据,如果内存没有可分配的了,则会覆盖1号slab比较旧的数据。此时你说“我的内存还有40%的时候LRU就执行了”,其实此时已经没有内存可分配了,因为这40%内存已经分配给了其他号的slab,所以1号slab的旧数据会被LRU。


还有
“Keep in mind that memcached is a cache not a database. It is fast, but not reliable storage.”
不知大家怎么理解的?



第一点得问题,没啥好说得,看memcached得数据结构吧

第二点,我说我得"我的内存还有40%的时候LRU就执行了",这个是那个场景得现象,现象不代表本质.而且问题得本质我在正文中已经说明了.

看看我的回复,
ahuaxuan 写道

一个slab会有多个page,明白不?不可能只用1m(只是预先分配1m,不是说只能使用1m,当这 1m的数据满了之后,会重新分配一个page给这个slab,一旦到达使用内存的上限就不会再分配新的page了,新数据进来会有针对该slab的 LRU,而且这个LRU只是针对该双向链表的前50个元素),看清楚文章再发言可以吗

你们的memcached是放在什么系统上跑的?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics