Current status: making another badly designed, probably over-dense Grafana dashboard, because I do want this information. Grafana is a box of sharp tools; using them to create aesthetic results is up to you.

You may think I'm exaggerating. Here:

@cks How does the 'top 10' thing work - does it pick the 10 first?

@penguin42 It uses a neat trick the Prometheus people added a while back. The general form is:

rate(metric[$__interval]) and topk(10, rate(metric[$__range] @ end())

The '@end()' forces the rate() in the topk() to always anchor itself at the end of the time range (and then you pick the top 10 total). So it filters the real rate() query down to only the results that are also in the top-10 overall.

@penguin42 The original way to do this was Grafana dashboard variables where you figured out the necessary label for the top-10 or whatever. But if you wanted to have a bunch of different top 10s ('top 10 by read volume, by write volume, by ...') you wound up with a profusion of dashboard variables and a bunch of annoyance (and also lots of regexp matches).
@cks why read and write in separate graphs? I always put the in the same on the negative side. Well, mostly for network, but same same

@fink I'm ambivalent about the negative side version, and in general I wanted to reduce the number of lines in each graph. Although the visible title is misleading, it's got nine or so fileservers in it.

(The per-fileserver dashboards have in and out together, but there it's two lines.)