Skip to content

Instantly share code, notes, and snippets.

@MasterDuke17
Last active February 8, 2018 17:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MasterDuke17/7aafabb580b66e38aabadbf04494525e to your computer and use it in GitHub Desktop.
Save MasterDuke17/7aafabb580b66e38aabadbf04494525e to your computer and use it in GitHub Desktop.
use Linux::Proc::Statm;
my $repo = './rakudo';
say get-statm-human.perl;
for ^50 {
say get-statm-human.perl if $_ %% 10;
my @tags = get-output(cwd => $repo, ‘git’, ‘tag’,
‘--format=%(*objectname)/%(objectname)/%(refname:strip=2)’,
‘--sort=-taggerdate’)<output>.lines;
my @commits = get-output(cwd => $repo, ‘git’, ‘rev-list’,
‘--all’, ‘--since=2014-01-01’)<output>.lines;
}
say get-statm-human.perl;
sub get-output(*@run-args, :$cwd) {
my $proc = Proc::Async.new: |@run-args;
my @chunks;
my $result;
my $s-start = now;
my $s-end;
react {
whenever $proc.stdout { @chunks.push: $_ }; # RT #131763
whenever $proc.stderr { @chunks.push: $_ };
whenever Promise.in(10) {
$proc.kill;
@chunks.push: “«timed out after 10 seconds»”
}
whenever $proc.start: :$cwd {
$result = $_;
$s-end = now;
done
}
}
%(
output => @chunks.join.chomp,
exit-code => $result.exitcode,
signal => $result.signal,
time => $s-end - $s-start,
)
}
{:data("97.956 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("104.500 kB"), :share("25.904 kB"), :size("203.132 kB"), :text("12 kB")}
{:data("97.956 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("104.500 kB"), :share("25.904 kB"), :size("203.132 kB"), :text("12 kB")}
{:data("1.150.316 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("483.012 kB"), :share("26.108 kB"), :size("2.207.268 kB"), :text("12 kB")}
{:data("1.282.932 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("616.640 kB"), :share("26.108 kB"), :size("2.302.372 kB"), :text("12 kB")}
{:data("1.391.468 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("731.612 kB"), :share("26.108 kB"), :size("2.397.432 kB"), :text("12 kB")}
{:data("1.485.172 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("823.412 kB"), :share("26.108 kB"), :size("2.426.904 kB"), :text("12 kB")}
{:data("1.568.728 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("927.464 kB"), :share("26.108 kB"), :size("2.456.164 kB"), :text("12 kB")}
$ perl6 --version
This is Rakudo version 2017.09-154-g03b1febc9 built on MoarVM version 2017.09.1-54-g9053a1d7
{:data("172.148 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("128.476 kB"), :share("27.400 kB"), :size("537.304 kB"), :text("12 kB")}
{:data("172.148 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("128.800 kB"), :share("27.400 kB"), :size("537.304 kB"), :text("12 kB")}
{:data("199.388 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("166.980 kB"), :share("27.572 kB"), :size("619.872 kB"), :text("12 kB")}
{:data("211.152 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("180.572 kB"), :share("27.572 kB"), :size("619.916 kB"), :text("12 kB")}
{:data("222.592 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("192.308 kB"), :share("27.572 kB"), :size("621.872 kB"), :text("12 kB")}
{:data("231.268 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("201.328 kB"), :share("27.572 kB"), :size("624.248 kB"), :text("12 kB")}
{:data("241.072 kB"), :dirty("0 kB"), :lib("0 kB"), :resident("212.276 kB"), :share("27.572 kB"), :size("626.668 kB"), :text("12 kB")}
Samples: 309K of event 'cycles:uppp', Event count (approx.): 4170574512271976
Overhead Command Shared Object Symbol ◆
15.23% moar libmoar.so [.] MVM_interp_run ▒
9.45% moar libpthread-2.25.so [.] __lll_lock_wait ▒
3.93% moar libmoar.so [.] MVM_gc_allocate_object ▒
3.16% moar libmoar.so [.] MVM_repr_clone ▒
2.97% moar libmoar.so [.] MVM_hll_current ▒
2.74% moar libmoar.so [.] MVM_spesh_arg_guard_run ▒
2.45% moar libmoar.so [.] MVM_gc_mark_thread_blocked ▒
2.40% moar perf-26126.map [.] 0x00007fb29c0dd702 ▒
2.38% moar libmoar.so [.] MVM_fixed_size_alloc ▒
2.34% moar perf-26126.map [.] 0x00007fb29c0dc000 ▒
2.28% moar perf-26126.map [.] 0x00007fb29cfbc10d ▒
2.13% moar libc-2.25.so [.] free ▒
1.94% moar libmoar.so [.] MVM_multi_cache_find_callsite_args ▒
1.90% moar libmoar.so [.] MVM_sc_get_object ▒
1.90% moar libperl6_ops_moar.so [.] rakudo_scalar_store ▒
1.83% moar libmoar.so [.] MVM_fixed_size_alloc_zeroed ▒
1.82% moar libmoar.so [.] MVM_frame_try_return ▒
1.65% moar libmoar.so [.] uv__hrtime@plt ▒
1.58% moar libmoar.so [.] MVM_bigint_bool ▒
1.58% moar libmoar.so [.] ssa ▒
1.57% moar libpthread-2.25.so [.] __lll_unlock_wake ▒
1.43% moar libc-2.25.so [.] syscall ▒
1.39% moar libperl6_ops_moar.so [.] p6bool ▒
1.39% moar perf-26126.map [.] 0x00007fb29cfbb000 ▒
1.39% perl6-m libc-2.25.so [.] __strchr_sse2 ▒
1.35% moar libc-2.25.so [.] __GI___libc_read ▒
1.28% moar libmoar.so [.] MVM_frame_invoke ▒
1.27% moar libmoar.so [.] at_key ▒
1.11% moar libmoar.so [.] MVM_sc_get_sc_object ▒
1.10% git ld-2.25.so [.] _start ▒
1.08% moar libperl6_ops_moar.so [.] p6decontrv ▒
1.08% moar libmoar.so [.] MVM_args_slurpy_named
@dogbert17
Copy link

dogbert17 commented Feb 8, 2018

A possibly interesting piece of information: If I run MasterDuke's example with /usr/bin/time on my 64 bit vm I get

dilbert@Linux-Mint18 ~ $ perl6 -v
This is Rakudo version 2018.01-143-g8ba3c86 built on MoarVM version 2018.01-77-g9a029b4
implementing Perl 6.c.
dilbert@Linux-Mint18 ~ $ /usr/bin/time perl6 gist.pl6
64.74user 4.07system 0:54.43elapsed 126%CPU (0avgtext+0avgdata 633920maxresident)k
968inputs+0outputs (57major+1165192minor)pagefaults 0swaps

what's interesting, at least to me, is what happens if I move the declarations of @tags and @commits out of the loop, i.e.

my @tags;
my @commits;
for ^50 {
    @tags = get-output(cwd => $repo, ‘git’, ‘tag’,
                          ‘--format=%(*objectname)/%(objectname)/%(refname:strip=2)’,
                          ‘--sort=-taggerdate’)<output>.lines;
    @commits = get-output(cwd => $repo, ‘git’, ‘rev-list’,
                          ‘--all’, ‘--since=2014-01-01’)<output>.lines;

If I rerun the code with this small change the results are as follows

dilbert@Linux-Mint18 ~ $ /usr/bin/time perl6 modified_gist.pl6
60.22user 3.32system 0:50.03elapsed 126%CPU (0avgtext+0avgdata 384148maxresident)k
0inputs+0outputs (0major+1106595minor)pagefaults 0swaps

Compare the maxresident numbers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment