class_docstr: Container for cluster load metrics.
  
  Metrics here are updated from raylet heartbeats. The autoscaler
  queries these metrics to determine when to scale up, and which nodes
  can be removed.
docstr: Return a dict of node resources for every node ip.
  
  Example:
      >>> from ray.autoscaler._private.load_metrics import LoadMetrics
      >>> metrics = LoadMetrics(...)  # doctest: +SKIP
      >>> metrics.get_static_node_resources_by_ip()  # doctest: +SKIP
      {127.0.0.1: {"CPU": 1}, 127.0.0.2: {"CPU": 4, "GPU": 8}}
docstr_tok: ["Return","a","dict","of","node","resources","for","every","node","ip",".","Example",":",">",">",">","from","ray.autoscaler._private.load_metrics","import","LoadMetrics",">",">",">","metrics","=","LoadMetrics","(","...",")","#","doctest",":","+SKIP",">",">",">","metrics.get_static_node_resources_by_ip","(",")","#","doctest",":","+SKIP","{","127.0.0.1",":","{","``","CPU","''",":","1","}",",","127.0.0.2",":","{","``","CPU","''",":","4",",","``","GPU","''",":","8","}","}"]
code: def get_static_node_resources_by_ip(
      self,
  ) -> Dict[NodeIP, ResourceDict]:
      """Return a dict of node resources for every node ip.
  
      Example:
          >>> from ray.autoscaler._private.load_metrics import LoadMetrics
          >>> metrics = LoadMetrics(...)  # doctest: +SKIP
          >>> metrics.get_static_node_resources_by_ip()  # doctest: +SKIP
          {127.0.0.1: {"CPU": 1}, 127.0.0.2: {"CPU": 4, "GPU": 8}}
      """
      return self.static_resources_by_ip
  
imports: import logging
  import time
  from collections import Counter
  from functools import reduce
  from typing import Dict, List
  from ray._private.gcs_utils import PlacementGroupTableData
  from ray.autoscaler._private.constants import AUTOSCALER_MAX_RESOURCE_DEMAND_VECTOR_SIZE, AUTOSCALER_REPORT_PER_NODE_STATUS
  from ray.autoscaler._private.util import DictCount, LoadMetricsSummary, NodeIP, ResourceDict
  from ray.core.generated.common_pb2 import PlacementStrategy
label_desc: Use image node_id 8 for calling the LoadMetrics obj's underlying member method code with example usage: obj.get_static_node_resources_by_ip() and returns: self