Beispiel #1
0
        void Run()
        {
            try
            {
                while (true)
                {
                    if (HardwareMonitor.RefreshValues() == false)
                    { // Miner crashed
                        Log.Event("Miner crashed");

                        Miner.instance.Stop();
                        return;
                    }
                    onValueUpdated?.Invoke();

                    if (HardwareMonitor.percentTotalCPU - HardwareMonitor.percentMinerCPU > Miner.instance.currentTargetCpu)
                    { // Something else is using the entire budget
                        Log.Event($"Miner killed by competing app: target: {Miner.instance.currentTargetCpu} with {HardwareMonitor.percentTotalCPU - HardwareMonitor.percentMinerCPU:p4} consumed by other apps.  Miner was at {HardwareMonitor.percentMinerCPU:p4}");

                        Miner.instance.Stop();
                        return;
                    }
                    UpdateSleepFor();

                    Thread.Sleep(100);
                }
            }
            catch (Exception e)
            {
                Log.Exception(e);
            }
        }
        void Refresh(
            object sender,
            ElapsedEventArgs eargs)
        {
            try
            {
                if (HardwareMonitor.RefreshValues() == false &&
                    Miner.instance.isMinerRunning)
                { // Miner crashed
                    Log.Info("Miner crashed");

                    Miner.instance.Stop();
                    return;
                }
                onValueUpdated?.Invoke();

                if (HardwareMonitor.isMinerDataReady)
                {
                    if (HardwareMonitor.percentTotalCPU - HardwareMonitor.percentMinerCPU > Miner.instance.currentTargetCpu)
                    { // Something else is using the entire budget consistently for at least 2 seconds (sleep by 1)
                        if (DateTime.Now - last > TimeSpan.FromSeconds(1.5))
                        {
                            Log.Info($"Miner killed by competing app: target: {Miner.instance.currentTargetCpu} with {HardwareMonitor.percentTotalCPU - HardwareMonitor.percentMinerCPU:p4} consumed by other apps.  Miner was at {HardwareMonitor.percentMinerCPU:p4}");

                            Miner.instance.Stop();
                            return;
                        }
                    }
                    else
                    {
                        last = DateTime.Now;
                    }
                    UpdateSleepFor();
                }
                else
                {
                    last = DateTime.Now;
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
Beispiel #3
0
        void Timer_Elapsed(
            object sender,
            ElapsedEventArgs e)
        {
            if (
                // Not already running
                Miner.instance.isMinerRunning == false
                // User has not touched keyboard or mouse in awhile
                && Miner.instance.isCurrentlyIdle
                // The miner did not recently shut down (prevents frequent on/off issues)
                && Miner.instance.timeSinceLastStopped > TimeSpan.FromMinutes(1))
            {
                HardwareMonitor.RefreshValues();

                if (// The cpu is not already over our max
                    Miner.instance.settings.minerConfig.maxCpuWhileIdle > HardwareMonitor.percentTotalCPU)
                {
                    Miner.instance.Start(false);
                }
            }
        }