class_docstr: GPU memory usage plot that includes information about memory
  managed by RMM. If an RMM pool is being used, shows the amount of
  pool memory utilized.
class_docstr_tok: ["GPU","memory","usage","plot","that","includes","information","about","memory","managed","by","RMM",".","If","an","RMM","pool","is","being","used",",","shows","the","amount","of","pool","memory","utilized","."]
code: def __init__(self, scheduler, width=600, **kwargs):
      DashboardComponent.__init__(self)
      MemoryColor.__init__(self, neutral_color="#76B900")
  
      self.last = 0
      self.scheduler = scheduler
      self.source = ColumnDataSource(
          {
              "width": [],
              "x": [],
              "y": [],
              "color": [],
              "alpha": [],
              "worker": [],
              "escaped_worker": [],
              "rmm_used": [],
              "rmm_total": [],
              "gpu_used": [],
              "gpu_total": [],
              "spilled": [],
          }
      )
  
      self.root = figure(
          title="RMM memory used",
          tools="",
          width=int(width / 2),
          name="rmm_memory",
          **kwargs,
      )
      rect = self.root.rect(
          source=self.source,
          x="x",
          y="y",
          width="width",
          height=0.9,
          color="color",
          fill_alpha="alpha",
          line_width=0,
      )
      rect.nonselection_glyph = None
  
      self.root.axis[0].ticker = BasicTicker(**TICKS_1024)
      self.root.xaxis[0].formatter = NumeralTickFormatter(
          format="0.0 b"
      )
      self.root.xaxis.major_label_orientation = XLABEL_ORIENTATION
      self.root.xaxis.minor_tick_line_alpha = 0
      self.root.x_range = Range1d(start=0)
      self.root.yaxis.visible = False
      self.root.ygrid.visible = False
      self.root.toolbar_location = None
  
      tap = TapTool(
          callback=OpenURL(url="./info/worker/@escaped_worker.html")
      )
      self.root.add_tools(tap)
  
      hover = HoverTool(
          point_policy="follow_mouse",
          tooltips="""
              <div>
                  <span style="font-size: 12px; font-weight: bold;">Worker:</span>&nbsp;
                  <span style="font-size: 10px; font-family: Monaco, monospace;">@worker</span>
              </div>
              <div>
                  <span style="font-size: 12px; font-weight: bold;">RMM memory used:</span>&nbsp;
                  <span style="font-size: 10px; font-family: Monaco, monospace;">@rmm_used{0.00 b} / @rmm_total{0.00 b}</span>
              </div>
              <div>
                  <span style="font-size: 12px; font-weight: bold;">GPU memory used:</span>&nbsp;
                  <span style="font-size: 10px; font-family: Monaco, monospace;">@gpu_used{0.00 b} / @gpu_total{0.00 b}</span>
              </div>
              <div>
                  <span style="font-size: 12px; font-weight: bold;">Spilled to CPU:</span>&nbsp;
                  <span style="font-size: 10px; font-family: Monaco, monospace;">@spilled{0.00 b}</span>
              </div>
              """,
      )
      self.root.add_tools(hover)
  
file_path: distributed/distributed/dashboard/components/rmm.py
imports: from __future__ import annotations
  from collections.abc import Iterable
  from typing import TypeVar
  from bokeh.core.properties import without_property_validation
  from bokeh.models import BasicTicker, ColumnDataSource, HoverTool, NumeralTickFormatter, OpenURL, Range1d, TapTool
  from bokeh.plotting import figure
  from tornado import escape
  from dask.utils import format_bytes
  from distributed.dashboard.components import DashboardComponent, add_periodic_callback
  from distributed.dashboard.components.scheduler import BOKEH_THEME, TICKS_1024, XLABEL_ORIENTATION, MemoryColor
  from distributed.dashboard.utils import update
  from distributed.utils import log_errors
label_desc: Use image node_id 1 to create a new RMMMemoryUsage object from inherited base classes: DashboardComponent, MemoryColor with example: obj = RMMMemoryUsage(scheduler, width)