code: def test_pg_actor_workloads(ray_start_regular_with_external_redis):
      from ray.util.placement_group import placement_group
  
      bundle1 = {"CPU": 1}
      pg = placement_group([bundle1], strategy="STRICT_PACK")
  
      ray.get(pg.ready())
  
      @ray.remote
      class Counter:
          def r(self, v):
              return v
  
          def pid(self):
              import os
  
              return os.getpid()
  
      c = Counter.options(
          scheduling_strategy=PlacementGroupSchedulingStrategy(
              placement_group=pg
          )
      ).remote()
      r = ray.get(c.r.remote(10))
      assert r == 10
  
      print("GCS is killed")
      pid = ray.get(c.pid.remote())
      ray.worker._global_node.kill_gcs_server()
  
      assert ray.get(c.r.remote(10)) == 10
  
      ray.worker._global_node.start_gcs_server()
  
      for _ in range(100):
          assert pid == ray.get(c.pid.remote())
  
imports: import sys
  import os
  import threading
  from time import sleep
  import pytest
  import ray
  from ray._private.utils import get_or_create_event_loop
  from ray.util.scheduling_strategies import PlacementGroupSchedulingStrategy
  import ray._private.gcs_utils
  from ray._private import ray_constants
  from ray._private.test_utils import convert_actor_state, enable_external_redis, generate_system_config_map, wait_for_condition, wait_for_pid_to_exit, run_string_as_driver
  from ray.job_submission import JobSubmissionClient, JobStatus
  from ray._raylet import GcsClient
  import psutil
label_desc: Use image node_id 15 for calling a global function with example usage: test_pg_actor_workloads(ray_start_regular_with_external_redis) and returns: v, os