该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间: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个元素),看清楚文章再发言可以吗 |
|
返回顶楼 | |
发表时间: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是放在什么系统上跑的? |
|
返回顶楼 | |