@Override
  public void endpointNowInUse(Endpoint endpoint) {
    try {
      long initDelay = calculateInitialDelay();

      // initDelay - the time to delay first execution
      // pingIntervalNanos - the delay between the termination of one execution and the commencement
      // of the next

      Future future = pool.getBackgroundProcessor().scheduleWithFixedDelay(new PingTask(endpoint),
          initDelay, pingIntervalNanos, TimeUnit.NANOSECONDS);
      taskFutures.put(endpoint, future);
    } catch (RejectedExecutionException e) {
      if (!pool.getCancelCriterion().isCancelInProgress()) {
        throw e;
      }
    }
  }
At each registration of new endpoint increase counter for calculation of initial delay offset
geode-core/src/main/java/org/apache/geode/cache/client/internal/LiveServerPinger.java