lestrrat's Journal http://use.perl.org/~lestrrat/journal/ lestrrat's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:42:45+00:00 pudge pudge@perl.org Technology hourly 1 1970-01-01T00:00+00:00 lestrrat's Journal http://use.perl.org/images/topics/useperl.gif http://use.perl.org/~lestrrat/journal/ Could we use Any::Moose instead of Mouse, please? http://use.perl.org/~lestrrat/journal/38691?from=rss <p>I have nothing against Mouse, but I'd like my app to run with either one of Mo[ou]se. For those applications wanting the lighter side of things, could we please make it a standard to use Any::Moose instead?</p><p>Really, I just want to choose which backend to use myself, rather than having to deal with two of them.</p><p>Please?</p><p>P.S., I've written <a href="http://search.cpan.org/dist/Module-Install-Any-Moose">Module::Install::Any::Moose</a> for this kind of thing.</p> lestrrat 2009-03-24T10:33:19+00:00 journal Introduction to Modern Perl Book (In Japanese) http://use.perl.org/~lestrrat/journal/38399?from=rss <p>Last year in a sudden fit of madness, I went and started talking to a publisher in Japan, asking if I could write a book about Perl.</p><p>Well, there was a brief moment of no activity, some crazy time trying to move my company to a new office, and then a stormy winter where I kept writing and writing and writing...</p><p>and finally, my first book, "<a href="http://www.amazon.co.jp/dp/4798119172">Introduction to Modern Perl</a>" is coming out this next week. I got the first printed version today. yey. </p><p>For this book, we decided to aim solely on the intermediate level perl programmer. So there's almost no talk about syntax. Lots of stuff about writing classes using Moose, job queues, profiling, debugging, performance tuning, etc. Basically we included pieces of material that we want our colleagues to have when working on a project together.</p><p>This is part of the material that we'd like to promote when Japan Perl Association comes alive. We want to teach people how to be efficient using perl. To that end, I think this book's going to be a pretty good intro, and I'm pretty proud I took the opportunity.</p><p>The only thing is... it's in Japanese. So... who's writing the English version?</p> lestrrat 2009-02-03T08:38:38+00:00 journal Japan Perl Association is coming http://use.perl.org/~lestrrat/journal/38354?from=rss <p>While the enlightened folks (<a href="http://www.enlightenedperl.org/">http://www.enlightenedperl.org/</a>) are working steadily towards their goal in the Western world, us folks in the Far East have something of our own that's being cooked up by the community.... and so here I am, pre-announcing the <b>Japan Perl Association</b>.</p><p>We're essentially a bunch of folks that want to make sure people know Perl Is Good For Your Business. Like chromatic said (<a href="http://www.modernperlbooks.com/mt/2009/01/why-modern-perl.html">http://www.modernperlbooks.com/mt/2009/01/why-modern-perl.html</a>), we're in 2009, not 1999. But a lot of people, including some major businesses are branding Perl as un-manageable. Those of us who decided to follow the Good Practices know that this isn't true: We know that Perl can be an excellent tool to build large, complex systems and still be extremely easy to manage. But have we done enough to promote Good Perl?</p><p>JPA will focus on those issues in Japan. Of course, if EPO can do it for us, that's good too, but there's always the language barrier. So JPA will (in Japanese<nobr> <wbr></nobr>;) give presentations and host seminars and training sessions. We will teach businesses how to harness Perl's true potential. We will host a portal where solutions can be found. We will promote more employment for Perl engineers. </p><p>Oh, and all this isn't just talk: JPA has already been incorporated. Yes, we have an identity already! We've managed to gather officers from some major Japanese IT players. We're currently discussing funding, targeting the coming fiscal year (Japan's fiscal year traditionally starts on April), and planning some activities for April and May.</p><p>We haven't yet come up with a website. We'll be getting one pretty soon-ish.</p><p>Also, you should know that, among other things, we will be running YAPC::Asia Tokyo (<a href="http://yapc.asia/">http://yapc.asia/</a>) from this year on. In 2008, we had a whopping 570 registered users. This year we want to extend this to somewhere around 700.</p><p>Also, we're planning to host YAPC::Asia Tokyo some where around September this year, mainly due to the transition of hands. Haven't been to Japan yet? We'll be waiting this autumn!</p><p>That's it for now. We'll have more details soon. Please contact me (lestrrat @ twitter, or dmaki on CPAN) if you have any questions.</p> lestrrat 2009-01-28T06:20:43+00:00 groups Profiling Your C Libraries http://use.perl.org/~lestrrat/journal/36309?from=rss <p>I've been trying to profile Memcached::libmemcached for a while.</p><p>Before I start, I'm not going to claim that I'm a C expert, so take my writings with a grain of salt. Ok?</p><p>I've run a few benchmarks on Cache::Memcached::libmemcached/ Memcached::libmemcached against Cache::Memcached::Fast, and have found that get_multi() seems to be consistently slower for Memcached::libmemcached. At this point I'm inclined to think that the bottleneck is within the underlying libmemcached library.</p><p>As the rules of optimization says, I wasn't going to do anything before I got a profile output, so I started digging around gprof.</p><p>Now, gprof looked much like my beloved Devel::DProf, so I was thinking this would be an easy task.... turns out not.</p><p>So the first thing to note: to enable profiling, you must enable -pg on both compilation and linking. in a nutshell, this is what you do:</p><blockquote><div><p> <tt>&nbsp; shell&gt; gcc -pg foo.c<br>&nbsp; shell&gt;<nobr> <wbr></nobr>./a.out<br>&nbsp; # executing<nobr> <wbr></nobr>./a.out (and a successful call to exit())<br>&nbsp; # creates a gmon.out file<br>&nbsp; shell&gt; gprof</tt></p></div> </blockquote><p>So first I created foo.c.</p><blockquote><div><p> <tt>&nbsp; #include &lt;libmemcached/memcached.h&gt;<br>&nbsp; #include &lt;stdio.h&gt;<br> <br>&nbsp; memcached_return<br>&nbsp; fetch(memcached_st *ptr, memcached_result_st *result, void *context)<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp; fprintf(stderr,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "%s =&gt; %s\n",<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; memcached_result_key_value(result),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; memcached_result_value(result)<br>&nbsp; &nbsp; &nbsp; );<br>&nbsp; }<br> <br>&nbsp; int<br>&nbsp; main(int argc, char **argv)<br>&nbsp; {<br>&nbsp; &nbsp; &nbsp; int i;<br>&nbsp; &nbsp; &nbsp; memcached_st *ptr;<br>&nbsp; &nbsp; &nbsp; char *keys[]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = { "a", "b", "c", "d", "e", "f" };<br>&nbsp; &nbsp; &nbsp; size_t key_length[]&nbsp; &nbsp;= {&nbsp; &nbsp;1,&nbsp; &nbsp;1,&nbsp; &nbsp;1,&nbsp; &nbsp;1,&nbsp; &nbsp;1,&nbsp; &nbsp;1 };<br>&nbsp; &nbsp; &nbsp; uint32_t flags = 0;<br>&nbsp; &nbsp; &nbsp; memcached_return error = 0;<br>&nbsp; &nbsp; &nbsp; memcached_return (*callbacks[])(memcached_st *ptr, memcached_result_st *result, void *context) = { fetch };<br> <br>&nbsp; &nbsp; &nbsp; ptr = memcached_create(NULL);<br>&nbsp; &nbsp; &nbsp; memcached_server_add(ptr, "localhost", 11211);<br> <br>&nbsp; &nbsp; &nbsp; for(i = 0; i &lt; 6; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; memcached_set(ptr, keys[i], key_length[i], "1", 1, (time_t) NULL, (uint32_t) NULL);<br>&nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; for(i = 0; i &lt; 100000; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; memcached_mget(ptr, keys, key_length, 6);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; memcached_fetch_execute(ptr, callbacks, NULL, 1);<br>&nbsp; &nbsp; &nbsp; }<br> <br>&nbsp; &nbsp; &nbsp; memcached_free(ptr);<br>&nbsp; }</tt></p></div> </blockquote><p>k. now, for my needs, I need to enable this on both libmemcached and my sample test file. So this is what I do:</p><blockquote><div><p> <tt>&nbsp; shell&gt;<nobr> <wbr></nobr>./configure --enable-pic CFLAGS=-pg LDFLAGS=-pg<br>&nbsp; shell&gt; make<br>&nbsp; shell&gt; make install</tt></p></div> </blockquote><p>and then I compile/link with my foo.c</p><blockquote><div><p> <tt>&nbsp; shell&gt; gcc -pg -lmemcached foo.c</tt></p></div> </blockquote><p>and now gprof:</p><blockquote><div><p> <tt>&nbsp; shell&gt; gprof -b<br>&nbsp; Flat profile:<br> <br>&nbsp; Each sample counts as 0.01 seconds.<br>&nbsp; &nbsp; %&nbsp; &nbsp;cumulative&nbsp; &nbsp;self&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self&nbsp; &nbsp; &nbsp;total<br>&nbsp; &nbsp;time&nbsp; &nbsp;seconds&nbsp; &nbsp;seconds&nbsp; &nbsp; calls&nbsp; Ts/call&nbsp; Ts/call&nbsp; name<br>&nbsp; &nbsp;57.14&nbsp; &nbsp; &nbsp; 0.04&nbsp; &nbsp; &nbsp;0.04&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fetch<br>&nbsp; &nbsp;42.86&nbsp; &nbsp; &nbsp; 0.07&nbsp; &nbsp; &nbsp;0.03&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 0.07&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp;800009&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; data_start<br> <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Call graph<br> <br>&nbsp; granularity: each sample hit covers 4 byte(s) for 14.29% of 0.07 seconds<br> <br>&nbsp; index % time&nbsp; &nbsp; self&nbsp; children&nbsp; &nbsp; called&nbsp; &nbsp; &nbsp;name<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [1]&nbsp; &nbsp; &nbsp;57.1&nbsp; &nbsp; 0.04&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fetch [1]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000/800009&nbsp; &nbsp; &nbsp; data_start [3]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [2]&nbsp; &nbsp; &nbsp;42.9&nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main [2]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 200009/800009&nbsp; &nbsp; &nbsp; data_start [3]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 200009/800009&nbsp; &nbsp; &nbsp; main [2]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000/800009&nbsp; &nbsp; &nbsp; fetch [1]<br>&nbsp; [3]&nbsp; &nbsp; &nbsp; 0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 800009&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data_start [3]<br>&nbsp; -----------------------------------------------<br> <br>&nbsp; Index by function name<br> <br>&nbsp; &nbsp; &nbsp;[3] data_start&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] fetch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[2] main</tt></p></div> </blockquote><p>Uh, what? where are my calls to memcached_* functions? Naturally, I try googling for gprof with dynamic linking, etc. But this didn't turn up much.</p><p>I fought with this for a while (actually, for like 2 months, on and off), and this morning I just had the thought to just link the objects statically. god, why didn't I think of this before?</p><p>So I've now moved back to where my<nobr> <wbr></nobr>.o files are (the "libmemcahced" directory) and moved my foo.c there. this time I do</p><blockquote><div><p> <tt>&nbsp; shell&gt; gcc -pg foo.c *.o<br>&nbsp; shell&gt;<nobr> <wbr></nobr>./a.out<br>&nbsp; shell&gt; gprof -b</tt></p></div> </blockquote><p>And guess what, I finally got my gprof!!! aaaaahhh bliss. I can finally start digging. At first flance, it looks like there are too many reads for the 100K mget() with 6 keys I'm doing (the profiling output reads <i>8.9 million</i> reads). I haven't done any work just yet. will see what I can find.</p><blockquote><div><p> <tt>&nbsp; Flat profile:<br> <br>&nbsp; Each sample counts as 0.01 seconds.<br>&nbsp; &nbsp; %&nbsp; &nbsp;cumulative&nbsp; &nbsp;self&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self&nbsp; &nbsp; &nbsp;total<br>&nbsp; &nbsp;time&nbsp; &nbsp;seconds&nbsp; &nbsp;seconds&nbsp; &nbsp; calls&nbsp; us/call&nbsp; us/call&nbsp; name<br>&nbsp; &nbsp;37.02&nbsp; &nbsp; &nbsp; 0.48&nbsp; &nbsp; &nbsp;0.48&nbsp; 8900049&nbsp; &nbsp; &nbsp;0.05&nbsp; &nbsp; &nbsp;0.05&nbsp; memcached_io_read<br>&nbsp; &nbsp;17.56&nbsp; &nbsp; &nbsp; 0.71&nbsp; &nbsp; &nbsp;0.23&nbsp; &nbsp;700006&nbsp; &nbsp; &nbsp;0.33&nbsp; &nbsp; &nbsp;1.24&nbsp; memcached_response<br>&nbsp; &nbsp;10.69&nbsp; &nbsp; &nbsp; 0.85&nbsp; &nbsp; &nbsp;0.14&nbsp; 1400019&nbsp; &nbsp; &nbsp;0.10&nbsp; &nbsp; &nbsp;0.12&nbsp; memcached_io_write<br>&nbsp; &nbsp; 8.40&nbsp; &nbsp; &nbsp; 0.96&nbsp; &nbsp; &nbsp;0.11&nbsp; &nbsp;600000&nbsp; &nbsp; &nbsp;0.18&nbsp; &nbsp; &nbsp;0.31&nbsp; value_fetch<br>&nbsp; &nbsp; 4.58&nbsp; &nbsp; &nbsp; 1.02&nbsp; &nbsp; &nbsp;0.06&nbsp; &nbsp;100000&nbsp; &nbsp; &nbsp;0.60&nbsp; &nbsp; &nbsp;2.50&nbsp; memcached_mget_by_key<br>&nbsp; &nbsp; 4.58&nbsp; &nbsp; &nbsp; 1.08&nbsp; &nbsp; &nbsp;0.06&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;__i686.get_pc_thunk.bx<br>&nbsp; &nbsp; 3.82&nbsp; &nbsp; &nbsp; 1.14&nbsp; &nbsp; &nbsp;0.05&nbsp; &nbsp;600000&nbsp; &nbsp; &nbsp;0.08&nbsp; &nbsp; &nbsp;0.08&nbsp; fetch<br>&nbsp; &nbsp; 3.05&nbsp; &nbsp; &nbsp; 1.18&nbsp; &nbsp; &nbsp;0.04&nbsp; &nbsp;100000&nbsp; &nbsp; &nbsp;0.40&nbsp; &nbsp; &nbsp;9.60&nbsp; memcached_fetch_execute<br>&nbsp; &nbsp; 2.29&nbsp; &nbsp; &nbsp; 1.21&nbsp; &nbsp; &nbsp;0.03&nbsp; &nbsp;600001&nbsp; &nbsp; &nbsp;0.05&nbsp; &nbsp; &nbsp;0.05&nbsp; memcached_string_check<br>&nbsp; &nbsp; 2.29&nbsp; &nbsp; &nbsp; 1.24&nbsp; &nbsp; &nbsp;0.03&nbsp; &nbsp;100007&nbsp; &nbsp; &nbsp;0.30&nbsp; &nbsp; &nbsp;0.30&nbsp; io_flush<br>&nbsp; &nbsp; 1.53&nbsp; &nbsp; &nbsp; 1.25&nbsp; &nbsp; &nbsp;0.02&nbsp; &nbsp;600006&nbsp; &nbsp; &nbsp;0.03&nbsp; &nbsp; &nbsp;0.03&nbsp; memcached_generate_hash<br>&nbsp; &nbsp; 1.53&nbsp; &nbsp; &nbsp; 1.27&nbsp; &nbsp; &nbsp;0.02&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hash_crc32<br>&nbsp; &nbsp; 1.15&nbsp; &nbsp; &nbsp; 1.29&nbsp; &nbsp; &nbsp;0.01&nbsp; &nbsp;600000&nbsp; &nbsp; &nbsp;0.03&nbsp; &nbsp; &nbsp;0.03&nbsp; memcached_result_reset<br>&nbsp; &nbsp; 0.76&nbsp; &nbsp; &nbsp; 1.30&nbsp; &nbsp; &nbsp;0.01&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main<br>&nbsp; &nbsp; 0.38&nbsp; &nbsp; &nbsp; 1.30&nbsp; &nbsp; &nbsp;0.01&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;io_wait<br>&nbsp; &nbsp; 0.38&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.01&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_set_value<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp;600000&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_result_value<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp;600000&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_string_reset<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp;100007&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_connect<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp;100007&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; network_connect<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp;100000&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;2.50&nbsp; memcached_mget<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 7&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.12&nbsp; memcached_do<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;1.64&nbsp; memcached_send<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;1.64&nbsp; memcached_set<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; storage_op_string<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; host_reset<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.05&nbsp; memcached_create<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.18&nbsp; memcached_free<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_io_close<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.18&nbsp; memcached_quit<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.18&nbsp; memcached_quit_server<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.05&nbsp; memcached_result_create<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_result_free<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_server_add<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.05&nbsp; memcached_string_create<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; memcached_string_free<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; rebalance_wheel<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; server_add<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; server_list_free<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; set_hostinfo<br>&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 1.31&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;0.00&nbsp; &nbsp; &nbsp;0.00&nbsp; set_socket_options<br> <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Call graph<br> <br>&nbsp; granularity: each sample hit covers 4 byte(s) for 0.76% of 1.31 seconds<br> <br>&nbsp; index % time&nbsp; &nbsp; self&nbsp; children&nbsp; &nbsp; called&nbsp; &nbsp; &nbsp;name<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [1]&nbsp; &nbsp; &nbsp;93.1&nbsp; &nbsp; 0.01&nbsp; &nbsp; 1.21&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main [1]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.04&nbsp; &nbsp; 0.92&nbsp; 100000/100000&nbsp; &nbsp; &nbsp; memcached_fetch_execute [2]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.25&nbsp; 100000/100000&nbsp; &nbsp; &nbsp; memcached_mget [5]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_set [19]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_free [21]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_create [24]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_server_add [35]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.04&nbsp; &nbsp; 0.92&nbsp; 100000/100000&nbsp; &nbsp; &nbsp; main [1]<br>&nbsp; [2]&nbsp; &nbsp; &nbsp;73.3&nbsp; &nbsp; 0.04&nbsp; &nbsp; 0.92&nbsp; 100000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_fetch_execute [2]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.23&nbsp; &nbsp; 0.64&nbsp; 700000/700006&nbsp; &nbsp; &nbsp; memcached_response [3]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.05&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; fetch [10]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/700006&nbsp; &nbsp; &nbsp; memcached_send [18]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.23&nbsp; &nbsp; 0.64&nbsp; 700000/700006&nbsp; &nbsp; &nbsp; memcached_fetch_execute [2]<br>&nbsp; [3]&nbsp; &nbsp; &nbsp;66.4&nbsp; &nbsp; 0.23&nbsp; &nbsp; 0.64&nbsp; 700006&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_response [3]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.45&nbsp; &nbsp; 0.00 8300048/8900049&nbsp; &nbsp; &nbsp;memcached_io_read [4]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.11&nbsp; &nbsp; 0.08&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; value_fetch [7]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/8900049&nbsp; &nbsp; &nbsp;memcached_quit_server [23]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 600000/8900049&nbsp; &nbsp; &nbsp;value_fetch [7]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.45&nbsp; &nbsp; 0.00 8300048/8900049&nbsp; &nbsp; &nbsp;memcached_response [3]<br>&nbsp; [4]&nbsp; &nbsp; &nbsp;37.0&nbsp; &nbsp; 0.48&nbsp; &nbsp; 0.00 8900049&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_io_read [4]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.25&nbsp; 100000/100000&nbsp; &nbsp; &nbsp; main [1]<br>&nbsp; [5]&nbsp; &nbsp; &nbsp;19.1&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.25&nbsp; 100000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_mget [5]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.06&nbsp; &nbsp; 0.19&nbsp; 100000/100000&nbsp; &nbsp; &nbsp; memcached_mget_by_key [6]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.06&nbsp; &nbsp; 0.19&nbsp; 100000/100000&nbsp; &nbsp; &nbsp; memcached_mget [5]<br>&nbsp; [6]&nbsp; &nbsp; &nbsp;19.1&nbsp; &nbsp; 0.06&nbsp; &nbsp; 0.19&nbsp; 100000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_mget_by_key [6]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.14&nbsp; &nbsp; 0.03 1400000/1400019&nbsp; &nbsp; &nbsp;memcached_io_write [8]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.02&nbsp; &nbsp; 0.00&nbsp; 600000/600006&nbsp; &nbsp; &nbsp; memcached_generate_hash [13]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 100000/100007&nbsp; &nbsp; &nbsp; memcached_connect [29]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.11&nbsp; &nbsp; 0.08&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; memcached_response [3]<br>&nbsp; [7]&nbsp; &nbsp; &nbsp;14.3&nbsp; &nbsp; 0.11&nbsp; &nbsp; 0.08&nbsp; 600000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value_fetch [7]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 600000/8900049&nbsp; &nbsp; &nbsp;memcached_io_read [4]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 600000/600001&nbsp; &nbsp; &nbsp; memcached_string_check [11]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.01&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; memcached_result_reset [15]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;7/1400019&nbsp; &nbsp; &nbsp;memcached_do [20]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 12/1400019&nbsp; &nbsp; &nbsp;memcached_send [18]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.14&nbsp; &nbsp; 0.03 1400000/1400019&nbsp; &nbsp; &nbsp;memcached_mget_by_key [6]<br>&nbsp; [8]&nbsp; &nbsp; &nbsp;13.0&nbsp; &nbsp; 0.14&nbsp; &nbsp; 0.03 1400019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_io_write [8]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 100007/100007&nbsp; &nbsp; &nbsp; io_flush [12]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [9]&nbsp; &nbsp; &nbsp; 4.6&nbsp; &nbsp; 0.06&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;__i686.get_pc_thunk.bx [9]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.05&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; memcached_fetch_execute [2]<br>&nbsp; [10]&nbsp; &nbsp; &nbsp;3.8&nbsp; &nbsp; 0.05&nbsp; &nbsp; 0.00&nbsp; 600000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fetch [10]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; memcached_result_value [27]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/600001&nbsp; &nbsp; &nbsp; memcached_string_create [26]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 600000/600001&nbsp; &nbsp; &nbsp; value_fetch [7]<br>&nbsp; [11]&nbsp; &nbsp; &nbsp;2.3&nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 600001&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_string_check [11]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 100007/100007&nbsp; &nbsp; &nbsp; memcached_io_write [8]<br>&nbsp; [12]&nbsp; &nbsp; &nbsp;2.3&nbsp; &nbsp; 0.03&nbsp; &nbsp; 0.00&nbsp; 100007&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;io_flush [12]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/600006&nbsp; &nbsp; &nbsp; memcached_send [18]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.02&nbsp; &nbsp; 0.00&nbsp; 600000/600006&nbsp; &nbsp; &nbsp; memcached_mget_by_key [6]<br>&nbsp; [13]&nbsp; &nbsp; &nbsp;1.5&nbsp; &nbsp; 0.02&nbsp; &nbsp; 0.00&nbsp; 600006&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_generate_hash [13]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [14]&nbsp; &nbsp; &nbsp;1.5&nbsp; &nbsp; 0.02&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hash_crc32 [14]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.01&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; value_fetch [7]<br>&nbsp; [15]&nbsp; &nbsp; &nbsp;1.1&nbsp; &nbsp; 0.01&nbsp; &nbsp; 0.00&nbsp; 600000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_reset [15]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; memcached_string_reset [28]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [16]&nbsp; &nbsp; &nbsp;0.4&nbsp; &nbsp; 0.01&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;io_wait [16]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;spontaneous&gt;<br>&nbsp; [17]&nbsp; &nbsp; &nbsp;0.4&nbsp; &nbsp; 0.01&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_set_value [17]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_set [19]<br>&nbsp; [18]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_send [18]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/700006&nbsp; &nbsp; &nbsp; memcached_response [3]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; 12/1400019&nbsp; &nbsp; &nbsp;memcached_io_write [8]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_do [20]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/600006&nbsp; &nbsp; &nbsp; memcached_generate_hash [13]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;storage_op_string [31]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main [1]<br>&nbsp; [19]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_set [19]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_send [18]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit_server [23]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_send [18]<br>&nbsp; [20]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_do [20]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;7/1400019&nbsp; &nbsp; &nbsp;memcached_io_write [8]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;7/100007&nbsp; &nbsp; &nbsp; memcached_connect [29]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main [1]<br>&nbsp; [21]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_free [21]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit [22]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server_list_free [39]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_free [34]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_free [21]<br>&nbsp; [22]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit [22]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit_server [23]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit [22]<br>&nbsp; [23]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit_server [23]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_do [20]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/8900049&nbsp; &nbsp; &nbsp;memcached_io_read [4]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_io_close [33]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main [1]<br>&nbsp; [24]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_create [24]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_create [25]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_create [24]<br>&nbsp; [25]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_create [25]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_string_create [26]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_create [25]<br>&nbsp; [26]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_string_create [26]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/600001&nbsp; &nbsp; &nbsp; memcached_string_check [11]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; fetch [10]<br>&nbsp; [27]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_value [27]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000/600000&nbsp; &nbsp; &nbsp; memcached_result_reset [15]<br>&nbsp; [28]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 600000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_string_reset [28]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;7/100007&nbsp; &nbsp; &nbsp; memcached_do [20]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 100000/100007&nbsp; &nbsp; &nbsp; memcached_mget_by_key [6]<br>&nbsp; [29]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 100007&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_connect [29]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 100007/100007&nbsp; &nbsp; &nbsp; network_connect [30]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 100007/100007&nbsp; &nbsp; &nbsp; memcached_connect [29]<br>&nbsp; [30]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; 100007&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;network_connect [30]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;set_hostinfo [40]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;set_socket_options [41]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6/6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_send [18]<br>&nbsp; [31]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;storage_op_string [31]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server_add [38]<br>&nbsp; [32]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_reset [32]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_quit_server [23]<br>&nbsp; [33]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_io_close [33]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_free [21]<br>&nbsp; [34]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_free [34]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_string_free [36]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main [1]<br>&nbsp; [35]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_server_add [35]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server_add [38]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_result_free [34]<br>&nbsp; [36]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_string_free [36]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server_add [38]<br>&nbsp; [37]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rebalance_wheel [37]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_server_add [35]<br>&nbsp; [38]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server_add [38]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_reset [32]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rebalance_wheel [37]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcached_free [21]<br>&nbsp; [39]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server_list_free [39]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;network_connect [30]<br>&nbsp; [40]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;set_hostinfo [40]<br>&nbsp; -----------------------------------------------<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1/1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;network_connect [30]<br>&nbsp; [41]&nbsp; &nbsp; &nbsp;0.0&nbsp; &nbsp; 0.00&nbsp; &nbsp; 0.00&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;set_socket_options [41]<br>&nbsp; -----------------------------------------------<br>&nbsp; Index by function name<br> <br>&nbsp; &nbsp; &nbsp;[9] __i686.get_pc_thunk.bx&nbsp; [4] memcached_io_read&nbsp; &nbsp; &nbsp; [19] memcached_set<br>&nbsp; &nbsp; [10] fetch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[8] memcached_io_write&nbsp; &nbsp; &nbsp;[11] memcached_string_check<br>&nbsp; &nbsp; [14] hash_crc32&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [5] memcached_mget&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[26] memcached_string_create<br>&nbsp; &nbsp; [32] host_reset&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [6] memcached_mget_by_key&nbsp; [36] memcached_string_free<br>&nbsp; &nbsp; [12] io_flush&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[22] memcached_quit&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[28] memcached_string_reset<br>&nbsp; &nbsp; [16] io_wait&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [23] memcached_quit_server&nbsp; [30] network_connect<br>&nbsp; &nbsp; &nbsp;[1] main&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [3] memcached_response&nbsp; &nbsp; &nbsp;[37] rebalance_wheel<br>&nbsp; &nbsp; [29] memcached_connect&nbsp; &nbsp; &nbsp; [25] memcached_result_create [38] server_add<br>&nbsp; &nbsp; [24] memcached_create&nbsp; &nbsp; &nbsp; &nbsp;[34] memcached_result_free&nbsp; [39] server_list_free<br>&nbsp; &nbsp; [20] memcached_do&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[15] memcached_result_reset [40] set_hostinfo<br>&nbsp; &nbsp; &nbsp;[2] memcached_fetch_execute [17] memcached_result_set_value [41] set_socket_options<br>&nbsp; &nbsp; [21] memcached_free&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[27] memcached_result_value [31] storage_op_string<br>&nbsp; &nbsp; [13] memcached_generate_hash [18] memcached_send&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[7] value_fetch<br>&nbsp; &nbsp; [33] memcached_io_close&nbsp; &nbsp; &nbsp;[35] memcached_server_add</tt></p></div> </blockquote> lestrrat 2008-05-02T00:30:54+00:00 journal Spread - Who's using it? http://use.perl.org/~lestrrat/journal/36225?from=rss <p>So I'm a bit late to the party, and only now have noticed that there's something called Spread (http://www.spread.org) from Ask Bjorn Hansen's presentation slides.</p><p>The documentation for spread seems to be er, lacking. I can think of ways to use it but first of all? How widely is it being used? What do YOU use it for?</p><p>The other thing: Which perl binding do you use? Spread.pm and Spread::Session looks ok, but my immediate response was, oh, why don't I write Spread::libspread (much like Memcached::libmemcached) and make it pure OO to start with? Bad idea?</p><p>In any case, I'm interested in knowning what/how Spread is being used.... anybody?</p> lestrrat 2008-04-23T08:38:56+00:00 journal Introducing Cache::Memcached::LibMemcached http://use.perl.org/~lestrrat/journal/35395?from=rss <p>Last weekend, in seeing a <a href="http://alpha.mixi.co.jp/blog/?p=119">blog post </a>(note, it's in Japanese), I realized that while there is a version being developed by Tim Bunce, nobody had written a Cache::Memcached compatible interface to <a href="http://tangent.org/552/libmemcached.html">libmemcached</a>.</p><p>Ah well there <i>is</i> one now. It's now <a href="http://search.cpan.org/dist/Cache-Memcached-LibMemcached">available on CPAN</a> </p><p>I'm really glad I wrote it, libmemcached is <b>blazing fast</b>!</p><p>Here's the output of running the benchmark included with the distro on my laptop:</p><blockquote><div><p> <tt>&nbsp; daisuke@beefcake Cache-Memcached-LibMemcached$ perl -Mblib tools/benchmark.pl<br>&nbsp; ==== Benchmark "Simple get() (scalar)" ====<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rate&nbsp; perl_memcahed memcached_fast&nbsp; &nbsp;libmemcached<br>&nbsp; perl_memcahed&nbsp; 3837/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-80%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-88%<br>&nbsp; memcached_fast 18939/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;394%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-42%<br>&nbsp; libmemcached&nbsp; &nbsp;32895/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;757%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 74%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--<br>&nbsp; ==== Benchmark "Simple get() (w/serialize)" ====<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rate&nbsp; perl_memcahed memcached_fast&nbsp; &nbsp;libmemcached<br>&nbsp; perl_memcahed&nbsp; &nbsp;3658/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-77%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-84%<br>&nbsp; memcached_fast 16077/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;340%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-29%<br>&nbsp; libmemcached&nbsp; &nbsp;22727/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;521%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 41%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--<br>&nbsp; ==== Benchmark "Simple get() (w/compression)" ====<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rate&nbsp; perl_memcahed memcached_fast&nbsp; &nbsp;libmemcached<br>&nbsp; perl_memcahed&nbsp; &nbsp;3720/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-74%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-81%<br>&nbsp; memcached_fast 14535/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;291%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-27%<br>&nbsp; libmemcached&nbsp; &nbsp;19841/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;433%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 37%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--<br>&nbsp; ==== Benchmark "Simple set() (scalar)" ====<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rate&nbsp; perl_memcahed memcached_fast&nbsp; &nbsp;libmemcached<br>&nbsp; perl_memcahed&nbsp; &nbsp;7163/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-61%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-77%<br>&nbsp; memcached_fast 18519/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;159%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-41%<br>&nbsp; libmemcached&nbsp; &nbsp;31447/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;339%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 70%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--<br>&nbsp; ==== Benchmark "Simple set() (w/serialize)" ====<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Rate&nbsp; perl_memcahed memcached_fast&nbsp; &nbsp;libmemcached<br>&nbsp; perl_memcahed&nbsp; 3529/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-31%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-41%<br>&nbsp; memcached_fast 5086/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 44%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-15%<br>&nbsp; libmemcached&nbsp; &nbsp;6002/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 70%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 18%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--<br>&nbsp; ==== Benchmark "Simple set() (w/compress)" ====<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rate&nbsp; perl_memcahed&nbsp; &nbsp;libmemcached memcached_fast<br>&nbsp; perl_memcahed&nbsp; &nbsp;6684/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-39%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-63%<br>&nbsp; libmemcached&nbsp; &nbsp;10989/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 64%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-39%<br>&nbsp; memcached_fast 17986/s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;169%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 64%&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--</tt></p></div> </blockquote><p>Of course, there are some loose ends. First, there's that last benchmark entry (set w/compression) where Cache::Memcached::Fast is faster than libmemcached. I haven't really looked into it. Also, I haven't implemented stat() and the various libmemcached-specific stuff like consistent hashing, mostly because I've run out of tuits for now. Patches and/or comments are welcome. the svn repository is at</p><blockquote><div><p> <tt>http://svn.coderepos.org/share/lang/perl/Cache-Memcached-LibMemcached/trunk</tt></p></div> </blockquote> lestrrat 2008-01-15T23:25:38+00:00 journal POE::Filter::Stomp http://use.perl.org/~lestrrat/journal/34996?from=rss <p>Update: Apparently the author is still around. My emails keep being bounced, though... hmm.</p><p>Okay, so I'm heavily heavily using STOMP lately. I'm building systems that rely on <a href="http://groups.google.com/group/pocomq?lnk=srg">POE::Component::MessageQueue</a>, and now I need to implement the client portion in POE.</p><p>So I grab <a href="http://search.cpan.org/dist/POE-Filter-Stomp">POE::Filter::Stomp</a>, and I notice it's broken. I could send in patches, but that module has no tests. That to me calls for a rewrite, really, but it's not my module.</p><p>Anyway, I was in a bit of a hurry, so I just re-implemented the module with tests and all (well, they aren't the greatest of tests, but they at least excercise *something*). So I conjured up a tarball and email the author...</p><p>and he turns out to be MIA. yikes.</p><p>So now I'm going to have to send emails to modules@perl.org, wait for god knows how long until the author is official accepted as MIA...</p><p>Argh, no, I can't wait. Fine, I won't upload it to CPAN. But here's my repository:</p><p> &nbsp; &nbsp; <a href="http://svn.endeworks.jp/svn/perl/POE-Filter-Stomp/trunk">http://svn.endeworks.jp/svn/perl/POE-Filter-Stomp/trunk</a></p><p>Feel free to bang on it, I'm all up for fixing things -- I really need a stable STOMP infrastructure. Let me know if you use it.</p><p>P.S. If the author of POE-Filter-Stomp reads this, please contact me!</p> lestrrat 2007-11-28T17:39:16+00:00 journal