Skip to content

Commit f1d892f

Browse files
authored
CA-400860: make CPU and netdev RRDD plugins pick up changes in domains (#6067)
When these metrics were collected internally, Xenctrl was queried every 5 seconds. After being split into plugins, they started querying domains (and other information) only on startup, so couldn't pick up new VMs and report their metrics without restarting.
2 parents daa9938 + 99b8ad6 commit f1d892f

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

ocaml/xcp-rrdd/bin/rrdp-cpu/rrdp_cpu.ml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,8 @@ let dss_hostload xc domains =
226226
)
227227
]
228228

229-
let generate_cpu_ds_list xc domains () =
229+
let generate_cpu_ds_list xc () =
230+
let _, domains, _ = Xenctrl_lib.domain_snapshot xc in
230231
dss_pcpus xc @ dss_vcpus xc domains @ dss_loadavg () @ dss_hostload xc domains
231232

232233
let _ =
@@ -236,8 +237,8 @@ let _ =
236237
(* Share one page per PCPU and dom each *)
237238
let physinfo = Xenctrl.physinfo xc in
238239
let shared_page_count = physinfo.Xenctrl.nr_cpus + List.length domains in
239-
240+
(* TODO: Can run out of pages if a lot of domains are added at runtime *)
240241
Process.main_loop ~neg_shift:0.5
241242
~target:(Reporter.Local shared_page_count) ~protocol:Rrd_interface.V2
242-
~dss_f:(generate_cpu_ds_list xc domains)
243+
~dss_f:(generate_cpu_ds_list xc)
243244
)

ocaml/xcp-rrdd/bin/rrdp-netdev/rrdp_netdev.ml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,11 @@ let transform_taps devs =
131131
)
132132
newdevnames
133133

134-
let generate_netdev_dss doms () =
134+
let generate_netdev_dss () =
135+
let _, doms, _ =
136+
Xenctrl.with_intf (fun xc -> Xenctrl_lib.domain_snapshot xc)
137+
in
138+
135139
let uuid_of_domid domains domid =
136140
let _, uuid, _ =
137141
try List.find (fun (_, _, domid') -> domid = domid') domains
@@ -265,12 +269,8 @@ let generate_netdev_dss doms () =
265269
@ dss
266270

267271
let _ =
268-
Xenctrl.with_intf (fun xc ->
269-
let _, domains, _ = Xenctrl_lib.domain_snapshot xc in
270-
Process.initialise () ;
271-
(* Share one page per virtual NIC - documentation specifies max is 512 *)
272-
let shared_page_count = 512 in
273-
Process.main_loop ~neg_shift:0.5
274-
~target:(Reporter.Local shared_page_count) ~protocol:Rrd_interface.V2
275-
~dss_f:(generate_netdev_dss domains)
276-
)
272+
Process.initialise () ;
273+
(* Share one page per virtual NIC - documentation specifies max is 512 *)
274+
let shared_page_count = 512 in
275+
Process.main_loop ~neg_shift:0.5 ~target:(Reporter.Local shared_page_count)
276+
~protocol:Rrd_interface.V2 ~dss_f:generate_netdev_dss

0 commit comments

Comments
 (0)