<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Snooda]]></title> 
<link>http://www.snooda.com/index</link> 
<description><![CDATA[Snooda's Blog]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Snooda]]></copyright>
<item>
<link>http://www.snooda.com/read/187</link>
<title><![CDATA[Memcached内存分配及使用问题（怎样提高Memcached内存使用率）]]></title> 
<author>snooda &lt;admin@snooda.com&gt;</author>
<category><![CDATA[默认分类]]></category>
<pubDate>Fri, 08 Apr 2011 10:50:35 +0000</pubDate> 
<guid>http://www.snooda.com/read/187</guid> 
<description>
<![CDATA[ 
	    前几天做了个Memcached的思考，并测试了一些数据，是关于如何提高Memcached内存使用率的问题。<br />
    在启动memcached的时候可以加-f参数和-n参数。-f指定各slab里面chunk大小的变化比例，默认1.25，-n指定slab里面chunk大小从多少开始。<br />
使用memcache_add($memcache_obj, md5(rand()), str_repeat(md5(rand()),10), false,80000 );向memcache中持续灌入数据。<br />
<br />
<br />
Memcached –d start –m 50     启动memcache,增长系数默认为1.25<br />
结果：<br />
2011-03-28 11:15:37:SAR:localh~211:    10     0     0     0    0/0%     0     5   265   50M    0%     0     0     0 4/0/0<br />
2011-03-28 11:15:40:SAR:localh~211:    11     0     0   530    0/0%     0  192K    4K   50M    1%   797   530     0 4/0/0<br />
2011-03-28 11:15:43:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  105K   50M   17%   21K   13K     0 4/0/1<br />
2011-03-28 11:15:46:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  104K   50M   48%   61K   13K     0 4/1/1<br />
2011-03-28 11:15:49:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  102K   50M   77%   98K   13K   580 4/1/2<br />
2011-03-28 11:15:52:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  103K   50M   92%  116K   13K   13K 4/1/3<br />
2011-03-28 11:15:55:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  105K   50M   92%  116K   13K   13K 4/2/4<br />
2011-03-28 11:15:58:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  107K   50M   92%  116K   13K   13K 4/2/5<br />
2011-03-28 11:16:01:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  101K   50M   92%  116K   13K   13K 4/3/6<br />
<br />
使用率稳定在92%，存储116k条<br />
stats slabs<br />
STAT 8:chunk_size 440<br />
STAT 8:chunks_per_page 2383<br />
STAT 8:total_pages 50<br />
STAT 8:total_chunks 119150<br />
STAT 8:used_chunks 119150<br />
<br />
使用了大小为440字节的chunk。 使用了id为8的slab <br />
<br />
Memcached –d start –m 50 –f 2   增长系数为2<br />
结果：<br />
2011-03-28 11:17:53:SAR:localh~211:    10     0     0     0    0/0%     0     5   267   50M    0%     0     0     0 4/0/0<br />
2011-03-28 11:17:56:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  107K   50M   16%   20K   13K     0 4/0/0<br />
2011-03-28 11:17:59:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  106K   50M   47%   60K   13K     0 4/1/1<br />
2011-03-28 11:18:02:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  106K   50M   63%   80K   13K   13K 4/1/2<br />
2011-03-28 11:18:05:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  105K   50M   63%   80K   13K   13K 4/1/3<br />
2011-03-28 11:18:08:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  108K   50M   63%   80K   13K   13K 4/2/4<br />
2011-03-28 11:18:11:SAR:localh~211:    11     0     0   13K    0/0%     0    5M  106K   50M   63%   80K   13K   13K 4/2/5<br />
<br />
使用率稳定在63%，存储80k条。<br />
STAT 4:chunk_size 640<br />
STAT 4:chunks_per_page 1638<br />
STAT 4:total_pages 50<br />
STAT 4:total_chunks 81900<br />
STAT 4:used_chunks 81900<br />
<br />
使用了大小为640的chunk，使用了id为4的slab <br />
<br />
<br />
Memcached –d start –m 50 –f 1.001 –n 375 增长率为1.001 (memcache要求增长率必须大于1)<br />
结果：<br />
2011-03-28 14:40:09:SAR:127.0.~211:    11     0     0   12K    0/0%     0    4M  100K   50M   98%  124K   12K   10K 4/1/3<br />
2011-03-28 14:40:10:SAR:127.0.~211:    11     0     0   13K    0/0%     0    5M  104K   50M   99%  125K   13K   13K 4/1/3<br />
2011-03-28 14:40:11:SAR:127.0.~211:    11     0     0   13K    0/0%     0    5M  106K   50M   99%  125K   13K   13K 4/2/4<br />
<br />
使用率稳定在99%，存储125k条<br />
STAT 1:chunk_size 408<br />
STAT 1:chunks_per_page 2570<br />
STAT 1:total_pages 6<br />
STAT 1:total_chunks 15420<br />
STAT 1:used_chunks 15022<br />
<br />
使用了大小为408的chunk，使用了id为1的slab <br />
<br />
<br />
可见调整-f和-n的值可有效提高memcache对内存的使用率。<br />
不过需要注意的是，以上测试数据使用了同长度数据，对于长度不定长的数据，需要根据整体数据确定-f和-n的值。<br />
经过我的测试slab的id值最大为200，若id为199的slab中chunk仍小于数据长度，那么需要将数据存放在id为200的slab中，该slab中的chunk大小为1m，造成内存的巨大浪费。<br />
memcached -d start -m 50 -f 1.001 -n 100<br />
2011-03-28 14:51:15:SAR:127.0.~211:    11     0     0   13K    0/0%     0    5M  101K   50M    0%    50   13K   13K 4/1/2<br />
<br />
内存使用率约等于0，存储50条数据<br />
STAT 200:chunk_size 1048576<br />
STAT 200:chunks_per_page 1<br />
STAT 200:total_pages 50<br />
STAT 200:total_chunks 50<br />
STAT 200:used_chunks 50<br />
<br />
使用了大小为1m的chunk，使用了id为200的slab<br />
<br />
<br />
现在还有一个问题：<br />
STAT 1:chunk_size 408<br />
STAT 1:chunks_per_page 2570<br />
一个1m大小slab中存放了2570个大小为408的chunk，可见并没有放满，剩余的空间就被浪费了。对于这种情况，每个slab浪费的内存只有几百个字节，可以忽略不计，但是假如chunk大小为几十上百k的时候，空间浪费情况就很客观了。这时可在memcached启动时添加-I（大写的i）参数来改变slab的大小<br />
<br />
以上就是我做的评测和总结出来的一些东西，限于个人水平，如有错误之处请大家指正。
]]>
</description>
</item><item>
<link>http://www.snooda.com/read/187#blogcomment107</link>
<title><![CDATA[[评论] Memcached内存分配及使用问题（怎样提高Memcached内存使用率）]]></title> 
<author>菜鸟 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 07 Nov 2011 03:44:17 +0000</pubDate> 
<guid>http://www.snooda.com/read/187#blogcomment107</guid> 
<description>
<![CDATA[ 
	Memcached怎么使用，来点具体的，谢谢。
]]>
</description>
</item><item>
<link>http://www.snooda.com/read/187#blogcomment115</link>
<title><![CDATA[[评论] Memcached内存分配及使用问题（怎样提高Memcached内存使用率）]]></title> 
<author>Memcache &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 16 Jul 2012 09:29:19 +0000</pubDate> 
<guid>http://www.snooda.com/read/187#blogcomment115</guid> 
<description>
<![CDATA[ 
	，说的挺不错，结果： 2011-03-28 14:40:09:SAR:127.0.~211: 11 0 0 12K 0/0% 0 4M 100K 50M 98% 124K 12K 10K 4/1/3 2011-03-28 14:40:10:SAR:127.0.~211: 11 0 0 13K 0/0% 0 5M 104K 50M 99% 125K 13K 13K 4/1/3 2011-03-28 14:40:11:SAR:127.0.~211: 11 0 0 13K 0/0% 0 5M 106K 50M 99% 125K 13K 13K 4/2/4&nbsp;&nbsp;这格式的信息 如何显示出来的呢？用什么命令还是？
]]>
</description>
</item>
</channel>
</rss>