code: def _perform_system_check(self):
          
          if Global.CONFIG_MANAGER.tracing_mode:
              Global.LOGGER.debug("performing a system check")
  
          now = datetime.datetime.now()
          sent = Global.MESSAGE_DISPATCHER.dispatched
          received = self.fetched
          queue_length = sent - received
          message_sleep_interval = Global.CONFIG_MANAGER.message_fetcher_sleep_interval
  
          if Global.CONFIG_MANAGER.show_stats:
              if (now - self.last_stats_check_date).total_seconds() > Global.CONFIG_MANAGER.stats_timeout:
                  self.last_stats_check_date = now
                  stats_string = f"showing stats\n--- [STATS] ---\nMessage Sent: {sent}\nMessage Received: {received}\nMessage Sleep Interval = {message_sleep_interval}\nQueue length = {queue_length}\n--- [ END ] ---"
                  Global.LOGGER.info(stats_string)
  
          # if we are accumulating messages, or we have processed at least 5000 messages
          # since last check, we need to speed up the process
          messages_limit_reached = sent - self.last_queue_check_count > Global.CONFIG_MANAGER.messages_dispatched_for_system_check
          queue_limit_reached = queue_length > Global.CONFIG_MANAGER.queue_length_for_system_check
          time_limit_since_last_check_is_over = (now - self.last_queue_check_date).total_seconds() > Global.CONFIG_MANAGER.seconds_between_queue_check
  
          if not Global.CONFIG_MANAGER.fixed_message_fetcher_interval:
              if (messages_limit_reached) or (queue_limit_reached and time_limit_since_last_check_is_over):
                  cause = "messages limit reached" if messages_limit_reached else "queue limit reached"
                  Global.LOGGER.debug(f"triggering the throttle function due to {cause}")
                  self._adapt_sleep_interval(sent, received, queue_length, now)
docs: Perform a system check to define if we need to throttle to handle 
          all the incoming messages