[pve-devel] [PATCH qemu] add pve-api-updates trigger
Thomas Lamprecht
t.lamprecht at proxmox.com
Tue Aug 13 09:13:49 CEST 2019
Am 8/12/19 um 3:21 PM schrieb Dominik Csapak:
> i just benchmarked a cached stat version vs. not cached
Thanks.
> code is the following:
>
> ----8<----
> use strict;
> use warnings;
> use utf8;
>
> use Benchmark qw(cmpthese);
> use PVE::Tools qw(run_command);
>
> my $kvm_cache;
> my $kvm_timestamp;
>
> sub get_kvm_version {
> my $kvm_user_version = 'unknown';
>
> my $code = sub {
> my $line = shift;
> if ($line =~ m/^QEMU( PC)? emulator version (\d+\.\d+(\.\d+)?)(\.\d+)?[,\s]/) {
> $kvm_user_version = $2;
> }
> };
>
> eval { run_command("kvm -version", outfunc => $code); };
> warn $@ if $@;
> return $kvm_user_version;
> }
>
> cmpthese(-10, {
> cache => sub {
> my $mtime = (stat("/usr/bin/kvm"))[9];
> if (!$kvm_timestamp || !$kvm_cache || $kvm_timestamp < $mtime) {
> $kvm_timestamp = $mtime;
> $kvm_cache = get_kvm_version();
> }
> return $kvm_cache;
> },
> noncached => sub {
> return get_kvm_version();
> }
> });
> ---->8----
>
> result is:
>
> Rate noncached cache
> noncached 27.9/s -- -100%
> cache 696192/s 2490994% -
>
> so a single call to kvm --version takes ~35ms
> (which i can confirm doing 'time kvm --version')
OK, as expected, but good to have it backed up by numbers.
> so i would say we use the stat approach?
OK for me.
> or are you preferring saving the version into a file?
Seems like a bit more things to do, your solution for stat looks good,
so I would go with that one.
Thanks!
More information about the pve-devel
mailing list