Add: Memcached version : 1.4.4 (RedHat) Le samedi 14 novembre 2015 14:49:37 UTC+1, Nicolas Martinez a écrit : > > Hi, > few days i'm reading Memcached documentation and blogs... and i don't > understand how objects are stored. > > *My test* > > 3 slabs : > > > - 96.0 Bytes > - 120.0 Bytes > - 240.0 Bytes > > Everywhere, it's told : > > - if data is < 96 Bytes, it will be stored in Slabs1 (96B) > - if data > 96B and < 120B, it will be stored in Slabs2 (120B) > - if data > 120B, it will be stored in Slabs3 (240B) > - etc. > > BUT, for example, when i'm creating an *30B* object, it's stored in Slab2 > (*120B*), and NOT in Slab1 (*96B*). > > External sources: > >> For example, the default size for the smallest block is 88 bytes (40 >> bytes of value, and the default 48 bytes for the key and flag data). If the >> size of the first item you store into the cache is less than 40 bytes, then >> a slab with a block size of 88 bytes is created and the value stored. >> => >> https://dev.mysql.com/doc/mysql-ha-scalability/en/ha-memcached-using-memory.html > > > *WRONG* > > A slab class is a collection of pages divided into same sized chunks. Each >> slab class is referenced to by its chunk size. So we’ll have Slab class >> 80kb, Slab class 100kb and so on. When an object needs to be stored, its >> size determines where it gets stored. So if the object is larger than 80kb >> but less than 100kb, it gets stored into Slab class 100kb. >> => >> http://returnfoo.com/2012/02/memcached-memory-allocation-and-optimization-2/ > > > *WRONG* > > *How i create an object:* > > data=$(pwgen 30 -c 1) >> echo -e 'set 30 0 3600 30\r\n'$data'\r'| nc ${memcached_server} 11211 > > > So, when 30B object is creating : > > - key name : 30 = 2 bytes > - value: 30 characters = 30 bytes > - tags : 0 = 1 bytes > > => All = 33 bytes > If i add the default 48b *as explained on Mysql website* : 33 + 48 = 81B > ... so < Slab1 (91B)... but always stored in Slab2 (120B) > > So, *the size used to store object* in the good Slab *is not*: > > - object value size > - sum of KEY, VALUE and TAGS in bytes > > KEY size : 1 character = 1 B > VALUE size : 1 character = 1 B > TAGS size : 1 character = 1 B > > ... as read everywhere > > So, It seems that: (SUM of KEY+VALUE+TAGS ) > > - For slab1 96.0 Bytes, data stored if <= 31 B (SUM of 2+28+1 ) > - For slab2 120.0 Bytes, data stored if <= 55 B (SUM of 2+52+1 ) > - For slab3 152.0 Bytes, data stored if <= 87 B (SUM of 2+84+1 ) > - For slab4 192.0 Bytes, data stored if <= 126 B (SUM of 3+122+1 ) > - For slab5 240.0 Bytes, data stored if <= 174 B (SUM of 3+170+1 ) > - etc. > > > My configuration : > > - Chunk Size : 48 > - Chunk Growth Factore: 1,25 > - Max Bytes: 64.0 MBytes > > > So, someone could explain me how the data is stored in the right Slabs??? > How calculate it??? > > Thank you > > >
-- --- You received this message because you are subscribed to the Google Groups "memcached" group. To unsubscribe from this group and stop receiving emails from it, send an email to memcached+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.