Hola Martin,

El mar., 7 abr. 2020 a las 15:29, Martin Grigorov (<
martin.grigo...@gmail.com>) escribió:

> Hi Dormando,
>
> This is a continuation of the mail thread with subject "Is ARM64
> officially supported ?" [1]
>
> I've refreshed my Perl coding skills and came up with this wrapper around
> mc-crusher:
>
> =================================================
> #!/usr/bin/env perl
>
> # sudo cpan Cache::Memcached
>
> use strict;
> use warnings;
>
> use Cache::Memcached;
> use Data::Dumper;
> use Time::Piece;
>
> my $TESTBED_HOME = $ENV{'TESTBED_HOME'};
> die "Env variable 'TESTBED_HOME' is not set!" if ! defined($TESTBED_HOME);
> my $MC_CRUSHER_HOME = $ENV{'MC_CRUSHER_HOME'};
> die "Env variable 'MC_CRUSHER_HOME' is not set!" if !
> defined($MC_CRUSHER_HOME);
>
> if (scalar(@ARGV) < 2) {
>         die "Usage: mc-crusher.pl <conf> <host> <port> <timeoutInSecs>.
> For example: mc-crusher.pl cmd_get a.b.c.d 11211 60"
> }
>
> my $config = shift @ARGV;
> my $host = shift @ARGV;
> my $port = shift @ARGV || 8080;
> my $duration = shift @ARGV || 5 * 60; # 5 mins
>
> system("$MC_CRUSHER_HOME/mc-crusher --conf
> $TESTBED_HOME/etc/memcached/mc-crusher/conf/$config.conf --ip $host --port
> $port --timeout $duration");
>
> print "MC Crusher status: $!\n" if $!;
>
> my $serverAddr = "$host:$port";
> print "Server: $serverAddr\n";
> my @servers = ($serverAddr);
>
> my $memcached = new Cache::Memcached;
> $memcached->set_servers(\@servers);
>
> my $stats =
> $memcached->stats(['misc'])->{'hosts'}->{$serverAddr}->{'misc'};
> warn Dumper($stats);
>
> my $timestamp = localtime->datetime();
> my $cmd_per_sec = int($stats->{$config}) / $duration;
> my $bytes_written = $stats->{'bytes_written'};
> my $bytes_read = $stats->{'bytes_read'};
> my $time_system = $stats->{'rusage_system'};
> my $time_user = $stats->{'rusage_user'};
>
> my $today = localtime->ymd();
> my $folder = "$TESTBED_HOME/etc/memcached/$today";
> system("mkdir -p $folder");
> print "Cannot create '$folder': $!\n" if $!;
> my $filename = "$folder/memcached-mc-crusher-report-$host-$config.csv";
>
> my $headerPrefix = "${host}_${config}";
> open(my $fh, '>', $filename) or die "Could not open file '$filename': $!";
> print $fh
> "timeStamp,${headerPrefix}_per_sec,${headerPrefix}_bytes_written,${headerPrefix}_bytes_read,"
> .
>     "${headerPrefix}_time_system,${headerPrefix}_time_user,config,host\n";
> print $fh
> "$timestamp,$cmd_per_sec,$bytes_written,$bytes_read,$time_system,$time_user,$config,$host\n";
> close $fh;
> print "done\n";
> ==========================================
>
> Basically it executes mc-crusher with different configurations against
> different servers (x64 vs arm64) and stores the stats in CSV files, which
> later I visualize in Kibana.
>
> So far I've ran with these configs:
>
> cmd_get.conf:
>
> send=ascii_get,recv=blind_read,conns=50,key_prefix=foobar,key_prealloc=0,pipelines=8
>
> send=ascii_set,recv=blind_read,conns=10,key_prefix=foobar,key_prealloc=0,pipelines=4,stop_after=200000,usleep=1000,value_size=10
>
> cmd_set.conf:
>
> send=ascii_set,recv=blind_read,conns=5,key_prefix=foobar,value_size=2,value=hi,key_prealloc=1
>
>
> I always run those against freshly started Memcached server (started with:
> ./memcached -p 8080).
> After mc-crusher finishes I get the value of the current command, e.g.
> cmd_get, and divide it by
> the duration, to get the cmds per second.
>
> And here are the numbers I have so far:
>
> gets/s:
> - x64: ~450 000
> - arm64: ~310 000
>
> sets/s:
> - x64: ~25 000
> - arm64: ~63 000
>
> I.e. x64 is faster for GET and arm64 is faster for SET.
> Those numbers are averages from multiple runs.
>
> Do you see anything wrong in my Perl script ? Or any ideas how to improve
> it.
> Any hints how to profile the server to see why/where it is slower on
> different platforms ?
>

I was able to use your Perl script to run some tests here. It took me a
while to figure out how to provide the configurations but I managed :-)
I am experiencing a similar behavior on my machines - set command is faster
on ARM64 and get command on x86_64.
With a colleague of mine we are trying to find out the reason for these
differences with the help of 'perf' tool.
http://www.brendangregg.com/perf.html is a good resource how to use it.

Gracias!
Emilio


>
> 1. https://groups.google.com/forum/#!topic/memcached/8hT2BT9cgEc
>
>
> Regards,
> Martin
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "memcached" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to memcached+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/memcached/CAMomwMrES-%2BsTxYQrK9rQNaNCPRjA2FZUOYKR_rSgRUCiz5TiA%40mail.gmail.com
> <https://groups.google.com/d/msgid/memcached/CAMomwMrES-%2BsTxYQrK9rQNaNCPRjA2FZUOYKR_rSgRUCiz5TiA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/memcached/CADRXdtNjXvdnt7-BZ4eECyVQJdyG1VJdngf-BCm%2BJOuvMLuW%2Bg%40mail.gmail.com.

Reply via email to