def do_health_checks(self, list_of_ips):
        """
        Perform a health check on a list of IP addresses, using ICMPecho.

        Return tuple with list of failed IPs and questionable IPs.

        """
        # Calculate a decent overall timeout time for a ping attempt: 3/4th of
        # the monitoring interval. That way, we know we're done with this ping
        # attempt before the next monitoring attempt is started.
        ping_timeout = self.get_monitor_interval() * 0.75

        # Calculate a decent number of retries. For very short intervals we
        # shouldn't have any retries, for very long ones, we should have
        # several ones. Converting the timeout to an integer gives us what we
        # want: For timeouts less than 1 we have no retry at all.
        num_retries = int(ping_timeout)

        try:
            self.ping_count += len(list_of_ips)
            responses, no_responses = multiping.multi_ping(
                                        list_of_ips, ping_timeout, num_retries)
            self.update_stats(responses, no_responses)

        except Exception as e:
            logging.error("Exception while trying to monitor servers: %s" %
                          str(e))
            # Need to assume all IPs failed
            no_responses = list_of_ips

        return no_responses, []
Perform a health check on a list of IP addresses, using ICMPecho.

        Return tuple with list of failed IPs and questionable IPs.