code: def get_internal_states(self):
      states = {
          "total_published_events": self.total_published_events,
          "total_dead_actors": len(self.dead_actors_queue),
          "total_actors": len(DataSource.actors),
          "queue_size": self.subscriber_queue_size,
      }
      if self.accumulative_event_processing_s > 0:
          states["event_processing_per_s"] = (
              self.total_published_events
              / self.accumulative_event_processing_s
          )
      return states
  
file_path: ray/dashboard/modules/actor/actor_head.py
imports: import asyncio
  import logging
  import os
  import time
  from collections import deque
  import aiohttp.web
  import ray.dashboard.optional_utils
  import ray.dashboard.utils
  from ray._private.gcs_pubsub import GcsAioActorSubscriber
  from ray.core.generated import gcs_service_pb2, gcs_service_pb2_grpc
  from ray.dashboard.datacenter import DataSource, DataOrganizer
  from ray.dashboard.modules.actor import actor_consts
  from ray.dashboard.optional_utils import rest_response
label_desc: Use image node_id 2 for calling the ActorHead obj's underlying member method code with example usage: obj.get_internal_states() and returns: states