public void AttachPerformanceCountersCategoryInstance
        (
            string performanceCountersCategoryName
            , string performanceCountersCategoryInstanceNamePrefix
            , MultiPerformanceCountersTypeFlags enablePerformanceCounters           = MultiPerformanceCountersTypeFlags.ProcessNonTimeBasedCounters
            , PerformanceCounterInstanceLifetime performanceCounterInstanceLifetime = PerformanceCounterInstanceLifetime.Process
        )
        {
            if (!_isAttachPerformanceCounters)
            {
                _isAttachPerformanceCounters = true;
            }
            else
            {
                CommonPerformanceCountersContainer container = null;
                EasyPerformanceCountersHelper <CommonPerformanceCountersContainer>
                .AttachPerformanceCountersCategoryInstance
                (
                    performanceCountersCategoryName
                    , string.Format
                    (
                        "{1}{0}{2}"
                        , "-"
                        , "Non-Pooled Objects"
                        , performanceCountersCategoryInstanceNamePrefix
                    )
                    , out container
                    , PerformanceCounterInstanceLifetime.Process
                    , initializePerformanceCounterInstanceRawValue : 1009
                );

                EasyPerformanceCountersHelper <CommonPerformanceCountersContainer>
                .AttachPerformanceCountersCategoryInstance
                (
                    performanceCountersCategoryName
                    , string.Format
                    (
                        "{1}{0}{2}"
                        , "-"
                        , "Pooled Objects"
                        , performanceCountersCategoryInstanceNamePrefix
                    )
                    , out container
                    , PerformanceCounterInstanceLifetime.Process
                    , initializePerformanceCounterInstanceRawValue : 1009
                );
            }
        }
Ejemplo n.º 2
0
        public void AttachPerformanceCountersCategoryInstance
        (
            string performanceCountersCategoryNamePrefix
            , string performanceCountersCategoryInstanceNamePrefix
            , Func <bool> onGetEnabledCountPerformanceProcessFunc = null
            , PerformanceCounterInstanceLifetime
            performanceCounterInstanceLifetime
            = PerformanceCounterInstanceLifetime.Process
        )
        {
            var process            = Process.GetCurrentProcess();
            var processName        = process.ProcessName;
            var instanceNamePrefix = string
                                     .Format
                                     (
                "{0}-{1}"
                , processName
                , performanceCountersCategoryInstanceNamePrefix
                                     );

            instanceNamePrefix = performanceCountersCategoryInstanceNamePrefix;
            var suffix = "-Queue";

            _performanceCountersCategoryNameForQueueProcess         = performanceCountersCategoryNamePrefix + suffix;
            _performanceCountersCategoryInstanceNameForQueueProcess = instanceNamePrefix + suffix;



            var qpcc = _queuePerformanceCountersContainer;

            qpcc
            .AttachPerformanceCountersToMembers
            (
                _performanceCountersCategoryNameForQueueProcess
                , _performanceCountersCategoryInstanceNameForQueueProcess
                , performanceCounterInstanceLifetime
            );
            qpcc
            .RegisterCountersUsage();

            suffix = "-BatchProcess";

            _performanceCountersCategoryNameForBatchProcess         = performanceCountersCategoryNamePrefix + suffix;
            _performanceCountersCategoryInstanceNameForBatchProcess = instanceNamePrefix + suffix;
            CommonPerformanceCountersContainer container = null;

            EasyPerformanceCountersHelper <CommonPerformanceCountersContainer>
            .AttachPerformanceCountersCategoryInstance
            (
                _performanceCountersCategoryNameForBatchProcess
                , _performanceCountersCategoryInstanceNameForBatchProcess
                , out container
                , performanceCounterInstanceLifetime
            );

            if (_timerCounters == null)
            {
                _timerCounters = new WriteableTuple
                                 <
                    bool
                    , Stopwatch
                    , PerformanceCounter
                    , PerformanceCounter
                                 >[]
                {
                    WriteableTuple
                    .Create
                    <
                        bool
                        , Stopwatch
                        , PerformanceCounter
                        , PerformanceCounter
                    >
                    (
                        false
                        , null
                        , _queuePerformanceCountersContainer
                        .QueuedWaitAverageTimerPerformanceCounter
                        , _queuePerformanceCountersContainer
                        .QueuedWaitAverageBasePerformanceCounter
                    )
                    , WriteableTuple
                    .Create
                    <
                        bool
                        , Stopwatch
                        , PerformanceCounter
                        , PerformanceCounter
                    >
                    (
                        true
                        , null
                        , _queuePerformanceCountersContainer
                        .DequeueProcessedAverageTimerPerformanceCounter
                        , _queuePerformanceCountersContainer
                        .DequeueProcessedAverageBasePerformanceCounter
                    )
                };
            }


            _isAttachedPerformanceCounters          = true;
            OnGetEnabledCountPerformanceProcessFunc = onGetEnabledCountPerformanceProcessFunc;
        }