[pve-devel] [PATCH qemu] add pve-api-updates trigger
Dominik Csapak
d.csapak at proxmox.com
Mon Aug 12 15:21:18 CEST 2019
i just benchmarked a cached stat version vs. not cached
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')
so i would say we use the stat approach?
or are you preferring saving the version into a file?
More information about the pve-devel
mailing list