Class PerfCounterQuery


  • @ThreadSafe
    public final class PerfCounterQuery
    extends java.lang.Object
    Enables queries of Performance Counters using wild cards to filter instances
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private PerfCounterQuery()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String localizeIfNeeded​(java.lang.String perfObject, boolean force)
      Localize a PerfCounter string.
      private static java.lang.String localizeUsingPerfIndex​(java.lang.String perfObject)  
      static <T extends java.lang.Enum<T>>
      java.util.Map<T,​java.lang.Long>
      queryValues​(java.lang.Class<T> propertyEnum, java.lang.String perfObject, java.lang.String perfWmiClass)
      Query the a Performance Counter using PDH, with WMI backup on failure, for values corresponding to the property enum.
      static <T extends java.lang.Enum<T>>
      java.util.Map<T,​java.lang.Long>
      queryValuesFromPDH​(java.lang.Class<T> propertyEnum, java.lang.String perfObject)
      Query the a Performance Counter using PDH for values corresponding to the property enum.
      static <T extends java.lang.Enum<T>>
      java.util.Map<T,​java.lang.Long>
      queryValuesFromWMI​(java.lang.Class<T> propertyEnum, java.lang.String wmiClass)
      Query the a Performance Counter using WMI for values corresponding to the property enum.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • IS_VISTA_OR_GREATER

        private static final boolean IS_VISTA_OR_GREATER
      • FAILED_QUERY_CACHE

        private static final java.util.Set<java.lang.String> FAILED_QUERY_CACHE
      • LOCALIZE_CACHE

        private static final java.util.concurrent.ConcurrentHashMap<java.lang.String,​java.lang.String> LOCALIZE_CACHE
      • TOTAL_OR_IDLE_INSTANCES

        public static final java.lang.String TOTAL_OR_IDLE_INSTANCES
        See Also:
        Constant Field Values
      • NOT_TOTAL_INSTANCE

        public static final java.lang.String NOT_TOTAL_INSTANCE
        See Also:
        Constant Field Values
      • NOT_TOTAL_INSTANCES

        public static final java.lang.String NOT_TOTAL_INSTANCES
        See Also:
        Constant Field Values
    • Constructor Detail

      • PerfCounterQuery

        private PerfCounterQuery()
    • Method Detail

      • queryValues

        public static <T extends java.lang.Enum<T>> java.util.Map<T,​java.lang.Long> queryValues​(java.lang.Class<T> propertyEnum,
                                                                                                      java.lang.String perfObject,
                                                                                                      java.lang.String perfWmiClass)
        Query the a Performance Counter using PDH, with WMI backup on failure, for values corresponding to the property enum.
        Type Parameters:
        T - The enum type of propertyEnum
        Parameters:
        propertyEnum - An enum which implements PerfCounterQuery.PdhCounterProperty and contains the WMI field (Enum value) and PDH Counter string (instance and counter)
        perfObject - The PDH object for this counter; all counters on this object will be refreshed at the same time
        perfWmiClass - The WMI PerfData_RawData_* class corresponding to the PDH object
        Returns:
        An EnumMap of the values indexed by propertyEnum on success, or an empty map if both PDH and WMI queries failed.
      • queryValuesFromPDH

        public static <T extends java.lang.Enum<T>> java.util.Map<T,​java.lang.Long> queryValuesFromPDH​(java.lang.Class<T> propertyEnum,
                                                                                                             java.lang.String perfObject)
        Query the a Performance Counter using PDH for values corresponding to the property enum.
        Type Parameters:
        T - The enum type of propertyEnum
        Parameters:
        propertyEnum - An enum which implements PerfCounterQuery.PdhCounterProperty and contains the WMI field (Enum value) and PDH Counter string (instance and counter)
        perfObject - The PDH object for this counter; all counters on this object will be refreshed at the same time
        Returns:
        An EnumMap of the values indexed by propertyEnum on success, or an empty map if the PDH query failed.
      • queryValuesFromWMI

        public static <T extends java.lang.Enum<T>> java.util.Map<T,​java.lang.Long> queryValuesFromWMI​(java.lang.Class<T> propertyEnum,
                                                                                                             java.lang.String wmiClass)
        Query the a Performance Counter using WMI for values corresponding to the property enum.
        Type Parameters:
        T - The enum type of propertyEnum
        Parameters:
        propertyEnum - An enum which implements PerfCounterQuery.PdhCounterProperty and contains the WMI field (Enum value) and PDH Counter string (instance and counter)
        wmiClass - The WMI PerfData_RawData_* class corresponding to the PDH object
        Returns:
        An EnumMap of the values indexed by propertyEnum if successful, an empty map if the WMI query failed.
      • localizeIfNeeded

        public static java.lang.String localizeIfNeeded​(java.lang.String perfObject,
                                                        boolean force)
        Localize a PerfCounter string. English counter names should normally be in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009\Counter, but language manipulations may delete the 009 index. In this case we can assume English must be the language and continue. We may still fail to match the name if the assumption is wrong but it's better than nothing.
        Parameters:
        perfObject - A String to localize
        force - If true, always localize
        Returns:
        The localized string if localization successful, or the original string otherwise.
      • localizeUsingPerfIndex

        private static java.lang.String localizeUsingPerfIndex​(java.lang.String perfObject)