Conversation
|
I just ran into this myself. Looking forward to this landing so my dashboards will look nicer. |
|
Fix for: #1077 |
|
To answer a question @iximeow had, does the scrub count for these? To answer, here we have a propolis server running a scrub: So, we have a read only parent copying IO on a new blank disk. Looking in the console, we can see this:
We see the traffic from the initial boot, then IOs go to zero. A few minutes later, we see a little traffic on the disk, but I suspect this is from whatever background activities the boot disk is logging. I don't see traffic here to indicate the scrub traffic is being counted.
Now I have question for me, and that is why are these not counted? |



Crucible disk metrics were missing because
set_metric_consumerwas called on aDeviceAttachmentbefore Crucible's queues were associated with it. The original implementation only walked the already-associated queues and handed the consumer to each one'sQueueMinder. Any queue that arrived late simply never received it.The fix stores the
MetricConsumerinQueueColState(the collection-level state guarded by the collection's mutex), then inqueue_associatepropagates it to any newly-arriving queue's minder before the minder is installed into the slot. This mirrors exactly how the paused flag is already propagated to late-associating queues.A minor correctness fix:
as_mut()->as_ref()on the minder Optionwas also included, since
set_metric_consumertakes&self.