[pve-devel] Ceph OSD latency changes
Waschbüsch IT-Services GmbH
service at waschbuesch.it
Mon Aug 14 20:39:33 CEST 2017
Hi all,
In API2/Ceph.pm
osd latency information are read from the output of $get_osd_usage sub by running the monitor command 'pg dump'.
I don't know if this used to contain the latency information for each osd, but it does not in the current (luminous) tree.
I guess the information needs to be got from the output of 'osd perf'.
So, I guess this *should* do the trick. However, I do not have a development cluster up and running, so apologies for not being able to test this.
--- Ceph.pm.orig 2017-08-14 18:27:04.441035244 +0000
+++ Ceph.pm 2017-08-14 18:37:30.799198316 +0000
@@ -99,6 +99,13 @@
$osdmetadata->{$osd->{id}} = $osd;
}
+ my $osdperfdata_tmp = $rados->mon_command({ prefix => 'osd perf' });
+
+ my $osdperfdata = {};
+ foreach my $osdperf (@$osdperfdata_tmp) {
+ $osdperfdata->{$osdperf->{id}} = $osdperf;
+ }
+
my $nodes = {};
my $newnodes = {};
foreach my $e (@{$res->{nodes}}) {
@@ -122,12 +129,13 @@
$new->{total_space} = ($stat->{kb} || 1) * 1024;
$new->{bytes_used} = ($stat->{kb_used} || 0) * 1024;
$new->{percent_used} = ($new->{bytes_used}*100)/$new->{total_space};
- if (my $d = $stat->{fs_perf_stat}) {
- $new->{commit_latency_ms} = $d->{commit_latency_ms};
- $new->{apply_latency_ms} = $d->{apply_latency_ms};
- }
}
+ if (my $d = $osdperfdata->{$e->{id}}) {
+ $new->{commit_latency_ms} = $d->{commit_latency_ms};
+ $new->{apply_latency_ms} = $d->{apply_latency_ms};
+ }
+
my $osdmd = $osdmetadata->{$e->{id}};
if ($e->{type} eq 'osd' && $osdmd) {
if ($osdmd->{bluefs}) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.proxmox.com/pipermail/pve-devel/attachments/20170814/51c381fd/attachment.sig>
More information about the pve-devel
mailing list