Example #1
0
        public ServerStatistics(int criticalMemoryValue, MemoryAlarmStrategy memoryAlarmStrategy)
        {
            _criticalMemoryValue       = criticalMemoryValue;
            _counterProvider           = CounterProviderFactory.BuildCounterProvider(memoryAlarmStrategy, StartMemoryWarningCount);
            _memoryIntervalSamplesLeft = _counterProvider.GetNextCount();
            _memorySampleCount         = _memoryIntervalSamplesLeft;
            _memoryOverheadOccured     = false;

            _processMemoryTimer          = new Timer(MemorySamplingPeriod);
            _processMemoryTimer.Elapsed += ProcessMemoryTimerOnElapsed;
            _processMemoryTimer.Start();

            _threadsTimer          = new Timer(ThreadsSamplingPeriod);
            _threadsTimer.Elapsed += ThreadsTimerOnElapsed;
            _threadsTimer.Start();

            _totalCpuCounter = new PerformanceCounter
            {
                CategoryName = "Processor",
                CounterName  = "% Processor Time",
                InstanceName = "_Total",
                ReadOnly     = true
            };
            _totalCpuTimer          = new Timer(CpuSamplingPeriod);
            _totalCpuTimer.Elapsed += TotalCpuTimerOnElapsed;
            _totalCpuTimer.Start();
        }
Example #2
0
        public static IIntervalCounterProvider BuildCounterProvider(MemoryAlarmStrategy alarmStrategy, long startValue)
        {
            IIntervalCounterProvider counterProvider;

            switch (alarmStrategy)
            {
            case MemoryAlarmStrategy.Constant:
                counterProvider = new ConstantCounterProvider();
                break;

            case MemoryAlarmStrategy.Linear:
                counterProvider = new LinearCounterProvider();
                break;

            case MemoryAlarmStrategy.Geometric:
                counterProvider = new GeometricCounterProvider();
                break;

            case MemoryAlarmStrategy.Fibonacci:
                counterProvider = new FibonacciCounterProvider();
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(alarmStrategy), alarmStrategy, null);
            }

            counterProvider.StartValue = startValue;
            return(counterProvider);
        }