Looking forward to the results. Thanks for getting on this so quickly.

I think there's still a bug in tracking requested memory, and I want to
move the stats counters to a rollup at the end of a page move.
Otherwise I think this branch is complete pending any further stability
issues or feedback.

On Mon, 5 Oct 2015, Scott Mansfield wrote:

> I just put the newest code into production. I'm going to monitor it for a bit 
> to see how it behaves. As long as there's no obvious issues I'll enable reads 
> in a few hours, which are an order of magnitude more traffic. I'll let you 
> know what I find.
>
> On Monday, October 5, 2015 at 1:29:03 AM UTC-7, Dormando wrote:
>       It took a day of running torture tests which took 30-90 minutes to fail,
>       but along with a bunch of house chores I believe I've found the problem:
>
>       https://github.com/dormando/memcached/tree/slab_rebal_next - has a new
>       commit, specifically this:
>       
> https://github.com/dormando/memcached/commit/1c32e5eeff5bd2a8cc9b652a2ed808157e4929bb
>
>       It's somewhat relieving that when I brained this super hard back in
>       january I may have actually gotten the complex set of interactions
>       correct, I simply failed to keep typing when converting the comments to
>       code.
>
>       So this has been broken since 1.4.24, but hardly anyone uses the page
>       mover apparently. It's survived a 5 hour torture test (that I wrote in
>       2011!) once fixed (previously dying after 30-90 minutes). So please give
>       this one a try and let me know how it goes.
>
>       If it goes well I can merge up some other fixes from PR list and cut a
>       release, unless someone has feedback for something to change.
>
>       thanks!
>
>       On Thu, 1 Oct 2015, dormando wrote:
>
>       > I've seen items.c:1183 reported elsewhere in 1.4.24... so probably 
> the bug
>       > was introduced when I rewrote the page mover for that.
>       >
>       > I didn't mean to send me a core file: I mean if you dump the core you 
> can
>       > load it in gdb and get the backtrace (bt + thread apply all bt)
>       >
>       > Don't have a handler for convenient attaching :(
>       >
>       > didn't get a chance to poke at this today... I'll need another day to 
> try
>       > it out.
>       >
>       > On Thu, 1 Oct 2015, Scott Mansfield wrote:
>       >
>       > > Sorry for the data dumps here, but I want to give you everything I 
> have. I found 3 more addresses that showed up in the dmesg logs:
>       > >
>       > > $ for addr in 40e013 40eff4 40f7c4; do addr2line -e memcached 
> $addr; done
>       > >
>       > > .../build/memcached-1.4.24-slab-rebal-next/slabs.c:265 
> (discriminator 1)
>       > >
>       > > .../build/memcached-1.4.24-slab-rebal-next/items.c:312 
> (discriminator 1)
>       > >
>       > > .../build/memcached-1.4.24-slab-rebal-next/items.c:1183
>       > >
>       > >
>       > > I still haven't tried to attach a debugger, since the frequency of 
> the error would make it hard to catch it. Is there a handler that I could add 
> in to dump the stack trace when it segfaults? I'd get a core dump, but they 
> would be HUGE and contain confidential information.
>       > >
>       > >
>       > > Below are the full dmesg logs. Out of 205 servers, 35 had dmesg 
> logs after a memcached crash, and only one crashed twice, both times on the 
> original segfault. Below is the full unified set of dmesg logs, from which 
> you can get a sense of frequency.
>       > >
>       > >
>       > > [47992.109269] memcached[2798]: segfault at 0 ip 000000000040e007 
> sp 00007f4d20d25eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48960.851278] memcached[2805]: segfault at 0 ip 000000000040e007 
> sp 00007f3c30d15eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [46421.604609] memcached[2784]: segfault at 0 ip 000000000040e007 
> sp 00007fdb94612eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48429.671534] traps: memcached[2768] general protection ip:40e013 
> sp:7f1c32676be0 error:0 in memcached[400000+1d000]
>       > >
>       > > [71838.979269] memcached[2792]: segfault at 0 ip 000000000040e007 
> sp 00007f0162feeeb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [66763.091475] memcached[2804]: segfault at 0 ip 000000000040e007 
> sp 00007f8240170eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [102544.376092] traps: memcached[2792] general protection ip:40eff4 
> sp:7fa58095be18 error:0 in memcached[400000+1d000]
>       > >
>       > > [49932.757825] memcached[2777]: segfault at 0 ip 000000000040e007 
> sp 00007f1ff2131eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [50400.415878] memcached[2794]: segfault at 0 ip 000000000040e007 
> sp 00007f11a26daeb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48986.340345] memcached[2786]: segfault at 0 ip 000000000040e007 
> sp 00007f9235279eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [44742.175894] memcached[2796]: segfault at 0 ip 000000000040e007 
> sp 00007eff3a0cceb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [49030.431879] memcached[2776]: segfault at 0 ip 000000000040e007 
> sp 00007fdef27cfbe0 error 4 in memcached[400000+1d000]
>       > >
>       > > [50211.611439] traps: memcached[2782] general protection ip:40e013 
> sp:7f9ee1723be0 error:0 in memcached[400000+1d000]
>       > >
>       > > [62534.892817] memcached[2783]: segfault at 0 ip 000000000040e007 
> sp 00007f37f2d4beb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [78697.201195] memcached[2801]: segfault at 0 ip 000000000040e007 
> sp 00007f696ef1feb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48922.246712] memcached[2804]: segfault at 0 ip 000000000040e007 
> sp 00007f1ebb338eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [52170.371014] memcached[2809]: segfault at 0 ip 000000000040e007 
> sp 00007f5e62fcbeb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [69531.775868] memcached[2785]: segfault at 0 ip 000000000040e007 
> sp 00007ff50ac2eeb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48926.661559] memcached[2799]: segfault at 0 ip 000000000040e007 
> sp 00007f71e0ac6be0 error 4 in memcached[400000+1d000]
>       > >
>       > > [49491.126885] memcached[2745]: segfault at 0 ip 000000000040e007 
> sp 00007f5737c4beb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [104247.724294] traps: memcached[2793] general protection ip:40f7c4 
> sp:7f3af8c27eb0 error:0 in memcached[400000+1d000]
>       > >
>       > > [78098.528606] traps: memcached[2757] general protection ip:412b9d 
> sp:7fc0700dbdd0 error:0 in memcached[400000+1d000]
>       > >
>       > > [71958.385432] memcached[2809]: segfault at 0 ip 000000000040e007 
> sp 00007f8b68cd0eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48934.182852] memcached[2787]: segfault at 0 ip 000000000040e007 
> sp 00007f0aef774eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [104220.754195] traps: memcached[2802] general protection ip:40f7c4 
> sp:7ffa85a2deb0 error:0 in memcached[400000+1d000]
>       > >
>       > > [45807.670246] memcached[2755]: segfault at 0 ip 000000000040e007 
> sp 00007fd74a1d0eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [73640.102621] memcached[2802]: segfault at 0 ip 000000000040e007 
> sp 00007f7bb30bfeb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [67690.640196] memcached[2787]: segfault at 0 ip 000000000040e007 
> sp 00007f299580feb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [57729.895442] memcached[2786]: segfault at 0 ip 000000000040e007 
> sp 00007f204073deb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48009.284226] memcached[2801]: segfault at 0 ip 000000000040e007 
> sp 00007f7b30876eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [48198.211826] memcached[2811]: segfault at 0 ip 000000000040e007 
> sp 00007fd496d79eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [84057.439927] traps: memcached[2804] general protection ip:40f7c4 
> sp:7fbe75fffeb0 error:0 in memcached[400000+1d000]
>       > >
>       > > [50215.489124] memcached[2784]: segfault at 0 ip 000000000040e007 
> sp 00007f3234b73eb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [46545.316351] memcached[2789]: segfault at 0 ip 000000000040e007 
> sp 00007f362ceedeb0 error 4 in memcached[400000+1d000]
>       > >
>       > > [102076.523474] memcached[29833]: segfault at 0 ip 000000000040e007 
> sp 00007f3c89b9ebe0 error 4 in memcached[400000+1d000]
>       > >
>       > > [55537.568254] memcached[2780]: segfault at 0 ip 000000000040e007 
> sp 00007fc1f6005eb0 error 4 in memcached[400000+1d000]
>       > >
>       > >
>       > >
>       > >
>       > > On Thursday, October 1, 2015 at 5:40:35 PM UTC-7, Dormando wrote:
>       > >       got it. that might be a decent hint actually... I had addded 
> a bugfix to
>       > >       the branch to not miscount the mem_requested counter, but 
> it's not working
>       > >       or I missed a spot.
>       > >
>       > >       On Thu, 1 Oct 2015, Scott Mansfield wrote:
>       > >
>       > >       > The number now, after maybe 90 minutes of writes, is 1,446. 
> I think after disabling a lot of the data TTL'd out. I have to disable it for 
> now, again (for unrelated reasons, again). The page that I screenshotted 
> gives real time data, so the numbers were from right then. Last night, it 
> should have shown better numbers in terms of
>       "total_pages",
>       > >       but I didn't
>       > >       > get a screenshot. That number is directly from the stats 
> slabs output.
>       > >       >
>       > >       >
>       > >       >
>       > >       > On Thursday, October 1, 2015 at 4:21:42 PM UTC-7, Dormando 
> wrote:
>       > >       >       ok... slab class 12 claims to have 2 in 
> "total_pages", yet 14g in
>       > >       >       mem_requested. is this stat wrong?
>       > >       >
>       > >       >       On Thu, 1 Oct 2015, Scott Mansfield wrote:
>       > >       >
>       > >       >       > The ones that crashed (new code cluster) were set 
> to only be written to from the client applications. The data is an index key 
> and a series of data keys that are all written one after another. Each key 
> might be hashed to a different server, though, so not all of them are written 
> to the same server. I can give you a snapshot
>       of one of
>       > >       the
>       > >       >       clusters that
>       > >       >       > didn't crash (attached file). I can give more 
> detail offline if you need it.
>       > >       >       >
>       > >       >       >
>       > >       >       > On Thursday, October 1, 2015 at 2:32:53 PM UTC-7, 
> Dormando wrote:
>       > >       >       >       Any chance you could describe (perhaps 
> privately?) in very broad strokes
>       > >       >       >       what the write load looks like? (they're 
> getting only writes, too?).
>       > >       >       >       otherwise I'll have to devise arbitrary 
> torture tests. I'm sure the bug's
>       > >       >       >       in there but it's not obvious yet
>       > >       >       >
>       > >       >       >       On Thu, 1 Oct 2015, dormando wrote:
>       > >       >       >
>       > >       >       >       > perfect, thanks! I have $dayjob as well but 
> will look into this as soon as
>       > >       >       >       > I can. my torture test machines are in a 
> box but I'll try to borrow one
>       > >       >       >       >
>       > >       >       >       > On Thu, 1 Oct 2015, Scott Mansfield wrote:
>       > >       >       >       >
>       > >       >       >       > > Yes. Exact args:
>       > >       >       >       > > -p 11211 -u <omitted> -l 0.0.0.0 -c 
> 100000 -o slab_reassign -o lru_maintainer,lru_crawler,hash_algorithm=murmur3 
> -I 4m -m 56253
>       > >       >       >       > >
>       > >       >       >       > > On Thursday, October 1, 2015 at 12:41:06 
> PM UTC-7, Dormando wrote:
>       > >       >       >       > >       Were lru_maintainer/lru_crawler/etc 
> enabled though? even if slab mover is
>       > >       >       >       > >       off, those two were the big changes 
> in .24
>       > >       >       >       > >
>       > >       >       >       > >       On Thu, 1 Oct 2015, Scott Mansfield 
> wrote:
>       > >       >       >       > >
>       > >       >       >       > >       > The same cluster has > 400 
> servers happily running 1.4.24. It's been our standard deployment for a while 
> now, and we haven't seen any crashes. The servers in the same cluster running 
> 1.4.24 (with the same write load the new build was taking) have been up for 
> 29 days. The start options do not contain the
>       slab_automove
>       > >       option
>       > >       >       because
>       > >       >       >       it wasn't
>       > >       >       >       > >       effective for
>       > >       >       >       > >       > us before. The memory given is 
> possibly slightly different per server, as we calculate on startup how much 
> we give. It's in the same ballpark, though (~56 gigs).
>       > >       >       >       > >       >
>       > >       >       >       > >       > On Thursday, October 1, 2015 at 
> 12:11:35 PM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       Just before I sit in and 
> try to narrow this down: have you run any host on
>       > >       >       >       > >       >       1.4.24 mainline with those 
> same start options? just in case the crash is
>       > >       >       >       > >       >       older
>       > >       >       >       > >       >
>       > >       >       >       > >       >       On Thu, 1 Oct 2015, Scott 
> Mansfield wrote:
>       > >       >       >       > >       >
>       > >       >       >       > >       >       > Another message for you:
>       > >       >       >       > >       >       > [78098.528606] traps: 
> memcached[2757] general protection ip:412b9d sp:7fc0700dbdd0 error:0 in 
> memcached[400000+1d000]
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       > addr2line shows:
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       > $ addr2line -e memcached 
> 412b9d
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       > 
> /mnt/builds/slave/workspace/TL-SYS-memcached-slab_rebal_next/build/memcached-1.4.24-slab-rebal-next/assoc.c:119
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       > On Thursday, October 1, 
> 2015 at 1:41:44 AM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       Ok, thanks!
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >       I'll noodle this a 
> bit... unfortunately a backtrace might be more helpful.
>       > >       >       >       > >       >       >       will ask you to 
> attempt to get one if I don't figure anything out in time.
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >       (allow it to core 
> dump or attach a GDB session and set an ignore handler
>       > >       >       >       > >       >       >       for sigpipe/int/etc 
> and run "continue")
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >       what were your full 
> startup args, though?
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >       On Thu, 1 Oct 2015, 
> Scott Mansfield wrote:
>       > >       >       >       > >       >       >
>       > >       >       >       > >       >       >       > The commit was 
> the latest in slab_rebal_next at the time:
>       > >       >       >       > >       >       >       > 
> https://github.com/dormando/memcached/commit/bdd688b4f20120ad844c8a4803e08c6e03cb061a
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       > addr2line gave me 
> this output:
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       > $ addr2line -e 
> memcached 0x40e007
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       > 
> /mnt/builds/slave/workspace/TL-SYS-memcached-slab_rebal_next/build/memcached-1.4.24-slab-rebal-next/slabs.c:264
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       > As well, this was 
> running with production writes, but not reads. Even if we had reads on with 
> the few servers crashing, we're ok architecturally. That's why I can get it 
> out there without worrying too much. For now, I'm going to turn it off. I had 
> a metrics issue anyway that needs to get
>       fixed.
>       > >       Tomorrow I'm
>       > >       >       planning
>       > >       >       >       to test
>       > >       >       >       > >       again with
>       > >       >       >       > >       >       more
>       > >       >       >       > >       >       >       metrics, but I
>       > >       >       >       > >       >       >       > can get any new 
> code in pretty quick.
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       > On Thursday, 
> October 1, 2015 at 1:01:36 AM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       >       How many 
> servers were you running it on? I hope it wasn't more than a
>       > >       >       >       > >       >       >       >       handful. 
> I'd recommend starting with one :P
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       >       can you do 
> an addr2line? what were your startup args, and what was the
>       > >       >       >       > >       >       >       >       commit sha1 
> for the branch you pulled?
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       >       sorry about 
> that :/
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       >       On Thu, 1 
> Oct 2015, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >
>       > >       >       >       > >       >       >       >       > A few 
> different servers (5 / 205) experienced a segfault all within an hour or so. 
> Unfortunately at this point I'm a bit out of my depth. I have the dmesg 
> output, which is identical for all 5 boxes:
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       > 
> [46545.316351] memcached[2789]: segfault at 0 ip 000000000040e007 sp 
> 00007f362ceedeb0 error 4 in memcached[400000+1d000]
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       > I can 
> possibly supply the binary file if needed, though we didn't do anything 
> besides the standard setup and compile.
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       > On 
> Tuesday, September 29, 2015 at 10:27:59 PM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       >       >       If 
> you look at the new branch there's a commit explaining the new stats.
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       You 
> can watch slab_reassing_evictions vs slab_reassign_saves. you can also
>       > >       >       >       > >       >       >       >       >       
> test automove=1 vs automove=2 (please also turn on the lru_maintainer and
>       > >       >       >       > >       >       >       >       >       
> lru_crawler).
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       The 
> initial branch you were running didn't add any new stats. It just
>       > >       >       >       > >       >       >       >       >       
> restored an old feature.
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       On 
> Tue, 29 Sep 2015, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       > 
> An unrelated prod problem meant I had to stop after about an hour. I'm 
> turning it on again tomorrow morning.
>       > >       >       >       > >       >       >       >       >       > 
> Are there any new metrics I should be looking at? Anything new in the stats 
> output? I'm about to take a look at the diffs as well.
>       > >       >       >       > >       >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       > 
> On Tuesday, September 29, 2015 at 12:37:45 PM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     excellent. if automove=2 is too aggressive you'll see that come in in a
>       > >       >       >       > >       >       >       >       >       >   
>     hit ratio reduction.
>       > >       >       >       > >       >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     the new branch works with automove=2 as well, but it will attempt to
>       > >       >       >       > >       >       >       >       >       >   
>     rescue valid items in the old slab if possible. I'll still be working on
>       > >       >       >       > >       >       >       >       >       >   
>     it for another few hours today though. I'll mail again when I'm done.
>       > >       >       >       > >       >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     On Tue, 29 Sep 2015, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     > I have the first commit (slab_automove=2) running in prod right now. 
> Later today will be a full load production test of the latest code. I'll just 
> let it run for a few days unless I spot any problems. We have good metrics 
> for latency et. al. from the client side,
>       though network
>       > >       normally
>       > >       >       dwarfs
>       > >       >       >       memcached
>       > >       >       >       > >       time.
>       > >       >       >       > >       >       >       >       >       >   
>     >
>       > >       >       >       > >       >       >       >       >       >   
>     > On Tuesday, September 29, 2015 at 3:10:03 AM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       That's unfortunate.
>       > >       >       >       > >       >       >       >       >       >   
>     >
>       > >       >       >       > >       >       >       >       >       >   
>     >       I've done some more work on the branch:
>       > >       >       >       > >       >       >       >       >       >   
>     >       https://github.com/memcached/memcached/pull/112
>       > >       >       >       > >       >       >       >       >       >   
>     >
>       > >       >       >       > >       >       >       >       >       >   
>     >       It's not completely likely you would see enough of an improvement 
> from the
>       > >       >       >       > >       >       >       >       >       >   
>     >       new default mode. However if your item sizes change gradually, 
> items are
>       > >       >       >       > >       >       >       >       >       >   
>     >       reclaimed during expiration, or get overwritten (and thus freed 
> in the old
>       > >       >       >       > >       >       >       >       >       >   
>     >       class), it should work just fine. I have another patch coming 
> which should
>       > >       >       >       > >       >       >       >       >       >   
>     >       help though.
>       > >       >       >       > >       >       >       >       >       >   
>     >
>       > >       >       >       > >       >       >       >       >       >   
>     >       Open to feedback from any interested party.
>       > >       >       >       > >       >       >       >       >       >   
>     >
>       > >       >       >       > >       >       >       >       >       >   
>     >       On Fri, 25 Sep 2015, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >
>       > >       >       >       > >       >       >       >       >       >   
>     >       > I have it running internally, and it runs fine under normal 
> load. It's difficult to put it into the line of fire for a production 
> workload because of social reasons... As well it's a degenerate case that we 
> normally don't run in to (and actively try to avoid).
>       I'm going
>       > >       to run
>       > >       >       some
>       > >       >       >       heavier load
>       > >       >       >       > >       tests on
>       > >       >       >       > >       >       it
>       > >       >       >       > >       >       >       today. 
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       > On Wednesday, September 9, 2015 at 10:23:32 AM UTC-7, Scott 
> Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       I'm working on getting a test going internally. I'll let 
> you know how it goes. 
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       > Scott Mansfield
>       > >       >       >       > >       >       >       >       >       >   
>     >       > On Mon, Sep 7, 2015 at 2:33 PM, dormando wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       Yo,
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       
> https://github.com/dormando/memcached/commits/slab_rebal_next - would you
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       mind playing around with the branch here? You can see the 
> start options in
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       the test.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       This is a dead simple modification (a restoration of a 
> feature that was
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       arleady there...). The test very aggressively writes and 
> is able to shunt
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       memory around appropriately.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       The work I'm exploring right now will allow savings of 
> items being
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       rebalanced from, and increasing the aggression of page 
> moving without
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       being so brain damaged about it.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       But while I'm poking around with that, I'd be interested 
> in knowing if
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       this simple branch is an improvement, and if so how much.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       I'll push more code to the branch, but the changes should 
> be gated behind
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       a feature flag.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       On Tue, 18 Aug 2015, 'Scott Mansfield' via memcached 
> wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       > No worries man, you're doing us a favor. Let me know if 
> there's anything you need from us, and I promise I'll be quicker this time :)
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       > On Aug 18, 2015 12:01 AM, "dormando" 
> <dorm...@rydia.net> wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       Hey,
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       I'm still really interested in working on this. 
> I'll be taking a careful
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       look soon I hope.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       On Mon, 3 Aug 2015, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       > I've tweaked the program slightly, so I'm 
> adding a new version. It prints more stats as it goes and runs a bit faster.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       > On Monday, August 3, 2015 at 1:20:37 AM UTC-7, 
> Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >       Total brain fart on my part. Apparently I 
> had memcached 1.4.13 on my path (who knows how...) Using the actual one that 
> I've built works. Sorry for the confusion... can't believe I didn't realize 
> that before. I'm testing against the
>       compiled one now
>       > >       to see
>       > >       >       how it
>       > >       >       >       behaves.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >       On Monday, August 3, 2015 at 1:15:06 AM 
> UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             You sure that's 1.4.24? None of 
> those fail for me :(
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             On Mon, 3 Aug 2015, Scott Mansfield 
> wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > The command line I've used that 
> will start is:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > memcached -m 64 -o 
> slab_reassign,slab_automove
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > the ones that fail are:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > memcached -m 64 -o 
> slab_reassign,slab_automove,lru_crawler,lru_maintainer
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > memcached -o lru_crawler
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > I'm sure I've missed something 
> during compile, though I just used ./configure and make.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > On Monday, August 3, 2015 at 
> 12:22:33 AM UTC-7, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       I've attached a pretty 
> simple program to connect, fill a slab with data, and then fill another slab 
> slowly with data of a different size. I've been trying to get memcached to 
> run with the lru_crawler and lru_maintainer flags,
>       but I get
>       > >       '
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       Illegal suboption "(null)"' 
> every time I try to start with either in any configuration.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       I haven't seen it start to 
> move slabs automatically with a freshly installed 1.2.24.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       On Tuesday, July 21, 2015 
> at 4:55:17 PM UTC-7, Scott Mansfield wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >             I realize I've not 
> given you the tests to reproduce the behavior. I should be able to soon. 
> Sorry about the delay here.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > In the mean time, I wanted to 
> bring up a possible secondary use of the same logic to move items on slab 
> rebalancing. I think the system might benefit from using the same logic to 
> crawl the pages in a slab and compact the data in
>       the
>       > >       background. In
>       > >       >       the case
>       > >       >       >       where we
>       > >       >       >       > >       have
>       > >       >       >       > >       >       memory that
>       > >       >       >       > >       >       >       is
>       > >       >       >       > >       >       >       >       assigned to
>       > >       >       >       > >       >       >       >       >       the 
> slab
>       > >       >       >       > >       >       >       >       >       >   
>     but not
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       being used
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       because
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             of replaced
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > or TTL'd out data, returning the 
> memory to a pool of free memory will allow a slab to grow with that memory 
> first instead of waiting for an event where memory is needed at that instant.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > It's a change in approach, from 
> reactive to proactive. What do you think?
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             > On Monday, July 13, 2015 at 
> 5:54:11 PM UTC-7, Dormando wrote:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       > First, more detail for 
> you:
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       > We are running 1.4.24 in 
> production and haven't noticed any bugs as of yet. The new LRUs seem to be 
> working well, though we nearly always run memcached scaled to hold all data 
> without evictions. Those with evictions are
>       behaving
>       > >       well. Those
>       > >       >       without
>       > >       >       >       evictions
>       > >       >       >       > >       haven't
>       > >       >       >       > >       >       seen
>       > >       >       >       > >       >       >       crashing or
>       > >       >       >       > >       >       >       >       any
>       > >       >       >       > >       >       >       >       >       
> other
>       > >       >       >       > >       >       >       >       >       >   
>     noticeable
>       > >       >       >       > >       >       >       >       >       >   
>     >       bad
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       behavior.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       Neat.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       > OK, I think I see an area 
> where I was speculating on functionality. If you have a key in slab 21 and 
> then the same key is written again at a larger size in slab 23 I assumed that 
> the space in 21 was not freed on the second
>       write.
>       > >       With that
>       > >       >       >       assumption, the LRU
>       > >       >       >       > >       crawler
>       > >       >       >       > >       >       would
>       > >       >       >       > >       >       >       not free
>       > >       >       >       > >       >       >       >       up that
>       > >       >       >       > >       >       >       >       >       
> space.
>       > >       >       >       > >       >       >       >       >       >   
>     Also just
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       by observation
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       in
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             the
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       macro, the space is not 
> freed
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       > fast enough to be 
> effective, in our use case, to accept the writes that are happening. Think in 
> the hundreds of millions of "overwrites" in a 6 - 10 hour period across a 
> cluster.
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >
>       > >       >       >       > >       >       >       >       >       >   
>     >       >       >       >             >       Internally, "items" (a 
> key/value pair) are generally immutable. The only
>       > >       >       >       > >       >       >       >       >   ...
>
> --
>
> ---
> 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.
>
>

Reply via email to