On Sat, 4 Jul 2020, Shweta Agrawal wrote:

> > the rest is free memory, which should be measured separately.
> free memory for a class will be : (free_chunks * chunk_size) 
> And total memory reserved by a class will be : (total_pages*page_size)
>
> > If you're getting evictions in class A but there's too much free memory in 
> > classes C, D, etc 
> > then you have a balance issue. for example. An efficiency stat which just 
> > adds up the total pages doesn't tell you what to do with it. 
> I see. Got your point.Storage overhead can help in deciding the chunk_size 
> and growth_factor. Let me add storage-overhead and free memory as well for
> calculation.

Most people don't have to worry about growth_factor very much. Especially
since the large item code was added, but it has its own caveats. Growth
factor is only typically useful if you have _very_ statically sized
objects.

> One curious question: If we have an item of 500Bytes and there is free memory 
> only in class A(chunk_size: 100Bytes). Do cache evict items from class with
> largeer chunk_size or use multiple chunks from class A?

No, it will evict an item matching the 500 byte chunk size, and not touch
A. This is where the memory balancer comes in; it will move pages of
memory between slab classes to keep the tail age roughly the same between
classes. It does this slowly.

> Example:
> In below scenario, when we try to store item with 3MB, even when there was 
> memory in class with smaller chunk_size, it evicts items from 512K class and
> other memory is blocked by smaller slabs.

Large (> 512KB) items are an exception. It will try to evict from the
"large item" bucket, which is 512kb. It will try to do this up to a few
times, trying to free up enough memory to make space for the large item.

So to make space for a 3MB item, if the tail item is 5MB in size or 1MB in
size, they will still be evicted. If the tail age is low compared to all
other classes, the memory balancer will eventually move more pages into
the 512K slab class.

If you tend to store a lot of very large items, it works better if the
instances are larger.

Memcached is more optimized for performance with small items. if you try
to store a small item, it will evict exactly one item to make space.
However, for very large items (1MB+), the time it takes to read the data
from the network is so large that we can afford to do extra processing.

> 3Mb_items_eviction.png
>
>
> Thank you,
> Shweta
>
>
> On Sunday, July 5, 2020 at 1:13:19 AM UTC+5:30, Dormando wrote:
>       (memory_requested / (chunk_size * chunk_used)) * 100
>
>       is roughly the storage overhead of memory used in the system. the rest 
> is
>       free memory, which should be measured separately. If you're getting
>       evictions in class A but there's too much free memory in classes C, D, 
> etc
>       then you have a balance issue. for example. An efficiency stat which 
> just
>       adds up the total pages doesn't tell you what to do with it.
>
>       On Sat, 4 Jul 2020, Shweta Agrawal wrote:
>
>       > > I'll need the raw output from "stats items" and "stats slabs". I 
> don't 
>       > > think that efficiency column is very helpful. ohkay no worries. I 
> can get by Tuesday and will share. 
>       >
>       > Efficiency for each slab is calcuated as 
>       >  (("stats slabs" -> memory_requested) / (("stats slabs" -> 
> total_pages) * page_size)) * 100
>       >
>       >
>       > Attaching script which has calculations for the same. The script is 
> from memcahe repo with additional calculation for efficiency. 
>       > Will it be possible for you to verify if the efficiency calculation 
> is correct?
>       >
>       > Thank you,
>       > Shweta
>       >
>       > On Saturday, July 4, 2020 at 1:08:23 PM UTC+5:30, Dormando wrote:
>       >       ah okay.
>       >
>       >       I'll need the raw output from "stats items" and "stats slabs". 
> I don't
>       >       think that efficiency column is very helpful.
>       >
>       >       On Fri, 3 Jul 2020, Shweta Agrawal wrote:
>       >
>       >       >
>       >       >
>       >       > On Saturday, July 4, 2020 at 9:41:49 AM UTC+5:30, Dormando 
> wrote:
>       >       >       No attachment
>       >       >
>       >       >       On Fri, 3 Jul 2020, Shweta Agrawal wrote:
>       >       >
>       >       >       >
>       >       >       > Wooo...so quick. :):)
>       >       >       > > Correct, close. It actually uses more like 3 512k 
> chunks and then one 
>       >       >       > > smaller chunk from a different class to fit exactly 
> 1.6MB. 
>       >       >       > I see.Got it.
>       >       >       >
>       >       >       > >Can you share snapshots from "stats items" and 
> "stats slabs" for one of 
>       >       >       > these instances? 
>       >       >       >
>       >       >       > Currently I have summary of it, sharing the same 
> below. I can get snapshot by Tuesday as need to request for it.
>       >       >       >
>       >       >       > pages have value from total_pages from stats slab for 
> each slab
>       >       >       > item_size have value from chunk_size from stats slab 
> for each slab
>       >       >       > Used memory is calculated as pages*page size ---> 
> This has to corrected now.
>       >       >       >
>       >       >       >
>       >       >       > prod_stats.png
>       >       >       >
>       >       >       >
>       >       >       > > 90%+ are perfectly doable. You probably need to 
> look a bit more closely
>       >       >       > > into why you're not getting the efficiency you 
> expect. The detailed stats
>       >       >       > > output should point to why. I can help with that if 
> it's confusing.
>       >       >       >
>       >       >       > Great. Will surely ask for your input whenever I have 
> question. It is really kind of you to offer help. 
>       >       >       >
>       >       >       > > Either the slab rebalancer isn't keeping up or you 
> actually do have 39GB
>       >       >       > > of data and your expecations are a bit off. This 
> will also depending on
>       >       >       > > the TTL's you're setting and how often/quickly your 
> items change size.
>       >       >       > > Also things like your serialization method / 
> compression / key length vs
>       >       >       > > data length / etc.
>       >       >       >
>       >       >       > We have much less data than 39 GB. As after facing 
> evictions, it has been always kept higher than expected data-size.
>       >       >       > TTL is two days or more. 
>       >       >       > From my observation items size(data-length) is in the 
> range of 300Bytes to 500K after compression.
>       >       >       > Key length is in the range of 40-80 bytes.
>       >       >       >
>       >       >       > Thank you,
>       >       >       > Shweta
>       >       >       >  
>       >       >       > On Saturday, July 4, 2020 at 8:38:31 AM UTC+5:30, 
> Dormando wrote:
>       >       >       >       Hey,
>       >       >       >
>       >       >       >       > Putting my understanding to re-confirm:
>       >       >       >       > 1) Page size will always be 1MB and we cannot 
> change it.Moreover, it's not required to be changed.
>       >       >       >
>       >       >       >       Correct.
>       >       >       >
>       >       >       >       > 2) We can store items larger than 1MB and it 
> is done by combining chunks together. (example: let's say item size:
>       ~1.6MB -->
>       >       4 slab
>       >       >       >       chunks(512k slab) from
>       >       >       >       > 2 pages will be used)
>       >       >       >
>       >       >       >       Correct, close. It actually uses more like 3 
> 512k chunks and then one
>       >       >       >       smaller chunk from a different class to fit 
> exactly 1.6MB.
>       >       >       >
>       >       >       >       > We use memcache in production and in past we 
> saw evictions even when free memory was present. Also currently we use
>       cluster
>       >       with
>       >       >       39GB RAM in
>       >       >       >       total to
>       >       >       >       > cache data even when data size we expect is 
> ~15GB to avoid eviction of active items.
>       >       >       >
>       >       >       >       Can you share snapshots from "stats items" and 
> "stats slabs" for one of
>       >       >       >       these instances?
>       >       >       >
>       >       >       >       > But as our data varies in size, it is 
> possible to avoid evictions by tuning parameters: chunk_size, growth_factor,
>       >       slab_automove.
>       >       >       Also I
>       >       >       >       believe memcache
>       >       >       >       > is efficient and we can reduce cost by 
> reducing memory size for cluster. 
>       >       >       >       > So I am trying to find the best possible 
> memory size and parameters we can have.So want to be clear with my
>       understanding
>       >       and
>       >       >       calculations.
>       >       >       >       >
>       >       >       >       > So while trying different parameters and 
> putting all calculations, I observed that total_pages * item_size_max >
>       physical
>       >       memory for
>       >       >       a
>       >       >       >       machine. And from
>       >       >       >       > all blogs,and docs it didnot match my 
> understanding. But it's clear now. Thanks to you.
>       >       >       >       >
>       >       >       >       > One last question: From my trials I find that 
> we can achieve ~90% storage efficiency with memcache. (i.e we need
>       10MB of
>       >       physical
>       >       >       memory to
>       >       >       >       store 9MB of
>       >       >       >       > data. Do you recommend any idle memory-size 
> interms of percentage of expected data-size? 
>       >       >       >
>       >       >       >       90%+ are perfectly doable. You probably need to 
> look a bit more closely
>       >       >       >       into why you're not getting the efficiency you 
> expect. The detailed stats
>       >       >       >       output should point to why. I can help with 
> that if it's confusing.
>       >       >       >
>       >       >       >       Either the slab rebalancer isn't keeping up or 
> you actually do have 39GB
>       >       >       >       of data and your expecations are a bit off. 
> This will also depending on
>       >       >       >       the TTL's you're setting and how often/quickly 
> your items change size.
>       >       >       >       Also things like your serialization method / 
> compression / key length vs
>       >       >       >       data length / etc.
>       >       >       >
>       >       >       >       -Dormando
>       >       >       >
>       >       >       >       > On Saturday, July 4, 2020 at 12:23:09 AM 
> UTC+5:30, Dormando wrote:
>       >       >       >       >       Hey,
>       >       >       >       >
>       >       >       >       >       Looks like I never updated the manpage. 
> In the past the item size max was
>       >       >       >       >       achieved by changing the slab page 
> size, but that hasn't been true for a
>       >       >       >       >       long time.
>       >       >       >       >
>       >       >       >       >       From ./memcached -h:
>       >       >       >       >       -m, --memory-limit=<num>  item memory 
> in megabytes (default: 64)
>       >       >       >       >
>       >       >       >       >       ... -m just means the memory limit in 
> megabytes, abstract from the page
>       >       >       >       >       size. I think that was always true.
>       >       >       >       >
>       >       >       >       >       In any recentish version, any item 
> larger than half a page size (512k) is
>       >       >       >       >       created by stitching page chunks 
> together. This prevents waste when an
>       >       >       >       >       item would be more than half a page 
> size.
>       >       >       >       >
>       >       >       >       >       Is there a problem you're trying to 
> track down?
>       >       >       >       >
>       >       >       >       >       I'll update the manpage.
>       >       >       >       >
>       >       >       >       >       On Fri, 3 Jul 2020, Shweta Agrawal 
> wrote:
>       >       >       >       >
>       >       >       >       >       > Hi,
>       >       >       >       >       > Sorry if I am repeating the question, 
> I searched the list but could not find definite answer. So posting it.
>       >       >       >       >       >
>       >       >       >       >       > Memcache version: 1.5.10 
>       >       >       >       >       > I have started memcahce with option: 
> -I 4m (setting maximum item size to 4MB).Verified it is set by
>       command stats
>       >       settings ,
>       >       >       I can
>       >       >       >       see STAT
>       >       >       >       >       item_size_max
>       >       >       >       >       > 4194304.
>       >       >       >       >       >
>       >       >       >       >       > Documentation from git repository 
> here stats that:
>       >       >       >       >       >
>       >       >       >       >       > -I, --max-item-size=<size>
>       >       >       >       >       > Override the default size of each 
> slab page. The default size is 1mb. Default
>       >       >       >       >       > value for this parameter is 1m, 
> minimum is 1k, max is 1G (1024 * 1024 * 1024).
>       >       >       >       >       > Adjusting this value changes the item 
> size limit.
>       >       >       >       >       > My understanding from documentation 
> is this option will allow to save items with size till 4MB and the page
>       size for
>       >       each
>       >       >       slab will
>       >       >       >       be 4MB
>       >       >       >       >       (as I set it as
>       >       >       >       >       > -I 4m).
>       >       >       >       >       >
>       >       >       >       >       > I am able to save items till 4MB but 
> the page-size is still 1MB.
>       >       >       >       >       >
>       >       >       >       >       > -m memory size is default 64MB.
>       >       >       >       >       >
>       >       >       >       >       > Calculation:
>       >       >       >       >       > -> Calculated total pages used from 
> stats slabs output parameter total_pages = 64 (If page size is 4MB then
>       total
>       >       pages
>       >       >       should not
>       >       >       >       be more
>       >       >       >       >       than 16. Also
>       >       >       >       >       > when I store 8 items of ~3MB it uses 
> 25 pages but if page size is 4MB, it should use 8 pages right.)
>       >       >       >       >       >
>       >       >       >       >       > Can you please help me in 
> understanding the behaviour?
>       >       >       >       >       >
>       >       >       >       >       > Attached files with details for 
> output of command stats settings and stats slabs.
>       >       >       >       >       > Below is the summarized view of the 
> distribution. 
>       >       >       >       >       > First added items with variable 
> sizes, then then added items with 3MB and above.
>       >       >       >       >       >
>       >       >       >       >       > data_distribution.png
>       >       >       >       >       >
>       >       >       >       >       >
>       >       >       >       >       >
>       >       >       >       >       > Please let me know in case more 
> details are required or question is not clear.
>       >       >       >       >       >  
>       >       >       >       >       > Thank You,
>       >       >       >       >       >  Shweta
>       >       >       >       >       >
>       >       >       >       >       > --
>       >       >       >       >       >
>       >       >       >       >       > ---
>       >       >       >       >       > 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 memc...@googlegroups.com.
>       >       >       >       >       > To view this discussion on the web 
> visit
>       >       >       >       >       
> https://groups.google.com/d/msgid/memcached/2b640e1f-9f59-4432-a930-d830cbe8566do%40googlegroups.com.
>       >       >       >       >       >
>       >       >       >       >       >
>       >       >       >       >
>       >       >       >       > --
>       >       >       >       >
>       >       >       >       > ---
>       >       >       >       > 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 memc...@googlegroups.com.
>       >       >       >       > To view this discussion on the web visit
>       >       >       >       
> https://groups.google.com/d/msgid/memcached/586aad58-c6fb-4ed8-89ce-6b005d59ba12o%40googlegroups.com.
>       >       >       >       >
>       >       >       >       >
>       >       >       >
>       >       >       > prod_stats.png
>       >       >       >
>       >       >       > --
>       >       >       >
>       >       >       > ---
>       >       >       > 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 memc...@googlegroups.com.
>       >       >       > To view this discussion on the web visit
>       >       >       
> https://groups.google.com/d/msgid/memcached/8d011c1a-deec-463f-a17e-4e9908d97bdfo%40googlegroups.com.
>       >       >       >
>       >       >       >
>       >       >
>       >       > --
>       >       >
>       >       > ---
>       >       > 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 memc...@googlegroups.com.
>       >       > To view this discussion on the web visit
>       >       
> https://groups.google.com/d/msgid/memcached/f0c2bfe1-d65d-4b62-9a87-68fc42446c3do%40googlegroups.com.
>       >       >
>       >       >
>       >
>       > --
>       >
>       > ---
>       > 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 memc...@googlegroups.com.
>       > To view this discussion on the web visit
>       
> https://groups.google.com/d/msgid/memcached/bcd4da5a-ae8e-470f-beb9-2705c0f0202ao%40googlegroups.com.
>       >
>       >
>
> --
>
> ---
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/memcached/5e76fa4f-7e06-468a-8b10-d99ab89d7ec2o%40googlegroups.com.
>
>

-- 

--- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/memcached/alpine.DEB.2.21.2007042033510.18887%40dskull.

Reply via email to