private void checkCacheRequiredRolesMeet(List<HealthStatus> status) {
    // will have to call here okayHealth() or poorHealth()

    try {
      InternalCache cache = (InternalCache) CacheFactory.getAnyInstance();
      CachePerfStats cPStats = cache.getCachePerfStats();

      if (cPStats.getReliableRegionsMissingFullAccess() > 0) {
        // health is okay.
        long numRegions = cPStats.getReliableRegionsMissingFullAccess();
        status.add(okayHealth(
            String.format(
                "There are %s regions missing required roles; however, they are configured for full access.",
                numRegions)));
      } else if (cPStats.getReliableRegionsMissingLimitedAccess() > 0) {
        // health is poor
        long numRegions = cPStats.getReliableRegionsMissingLimitedAccess();
        status.add(poorHealth(
            String.format(
                "There are %s regions missing required roles and configured with limited access.",
                numRegions)));
      } else if (cPStats.getReliableRegionsMissingNoAccess() > 0) {
        // health is poor
        long numRegions = cPStats.getReliableRegionsMissingNoAccess();
        status.add(poorHealth(
            String.format(
                "There are %s regions missing required roles and configured without access.",
                numRegions)));
      }
    } catch (CancelException ignore) {
    }
  }
The function keeps updating the health of the cache based on roles required by the regions and
their reliability policies.
geode-core/src/main/java/org/apache/geode/admin/internal/MemberHealthEvaluator.java