Esempio n. 1
0
 private void CreateProcessAsync()
 {
     Task.Factory.StartNew(() => {
         lock (_locker) {
             try {
                 // 清理除当前外的Temp/Kernel
                 Cleaner.Instance.Clear();
                 NTMinerConsole.UserOk("场地打扫完毕");
                 // 应用超频
                 if (NTMinerContext.Instance.GpuProfileSet.IsOverClockEnabled(MainCoin.GetId()))
                 {
                     NTMinerConsole.UserWarn("应用超频,如果CPU性能较差耗时可能超过1分钟,请耐心等待");
                     var cmd = new CoinOverClockCommand(coinId: MainCoin.GetId());
                     AddOnecePath <CoinOverClockDoneEvent>("超频完成后继续流程", LogEnum.DevConsole,
                                                           message => {
                         // pathId是唯一的,从而可以断定该消息一定是因为该命令而引发的
                         ContinueCreateProcess();
                     }, location: this.GetType(), pathId: cmd.MessageId);
                     // 超频是在另一个线程执行的,因为N卡超频当cpu性能非常差时较耗时
                     VirtualRoot.Execute(cmd);
                 }
                 else
                 {
                     ContinueCreateProcess();
                 }
             }
             catch (Exception e) {
                 Logger.ErrorDebugLine(e);
                 NTMinerConsole.UserFail("挖矿内核启动失败,请联系开发人员解决");
             }
         }
     });
 }
Esempio n. 2
0
        private void ReportNodeAsync(Action callback = null)
        {
            int minerClientWsSessionCount = 0;
            int minerStudioWsSessionCount = 0;

            minerClientWsSessionCount = WsRoot.MinerClientSessionSet.WsSessionManager.Count;
            minerStudioWsSessionCount = WsRoot.MinerStudioSessionSet.WsSessionManager.Count;
            var ram = Windows.Ram.Instance;
            var cpu = Windows.Cpu.Instance;

            RpcRoot.OfficialServer.WsServerNodeService.ReportNodeStateAsync(new WsServerNodeState {
                Address                   = ServerRoot.HostConfig.ThisServerAddress,
                Description               = string.Empty,
                MinerClientSessionCount   = WsRoot.MinerClientSessionSet.Count,
                MinerStudioSessionCount   = WsRoot.MinerStudioSessionSet.Count,
                MinerClientWsSessionCount = minerClientWsSessionCount,
                MinerStudioWsSessionCount = minerStudioWsSessionCount,
                Cpu = cpu.ToData(),
                TotalPhysicalMemory     = ram.TotalPhysicalMemory,
                AvailablePhysicalMemory = ram.AvailablePhysicalMemory,
                OSInfo         = Windows.OS.Instance.OsInfo,
                CpuPerformance = cpu.GetCurrentCpuUsage()
            }, (response, e) => {
                if (response.IsSuccess())
                {
                    NTMinerConsole.UserOk("呼吸成功");
                }
                else
                {
                    NTMinerConsole.UserFail("呼吸失败:" + response.ReadMessage(e));
                }
                callback?.Invoke();
            });
        }
 private void ReportNodeAsync(Action callback = null)
 {
     Task.Factory.StartNew(() => {
         WsServerNodeState nodeState = null;
         try {
             int minerClientWsSessionCount = 0;
             int minerStudioWsSessionCount = 0;
             minerClientWsSessionCount     = AppRoot.WsServer.MinerClientWsSessions.Count;
             minerStudioWsSessionCount     = AppRoot.WsServer.MinerStudioWsSessions.Count;
             var ram   = Windows.Ram.Instance;
             var cpu   = Windows.Cpu.Instance;
             nodeState = new WsServerNodeState {
                 Address                   = ServerRoot.HostConfig.ThisServerAddress,
                 Description               = string.Empty,
                 MinerClientSessionCount   = AppRoot.MinerClientSessionSet.Count,
                 MinerStudioSessionCount   = AppRoot.MinerStudioSessionSet.Count,
                 MinerClientWsSessionCount = minerClientWsSessionCount,
                 MinerStudioWsSessionCount = minerStudioWsSessionCount,
                 Cpu = cpu.ToData(),
                 TotalPhysicalMemory     = ram.TotalPhysicalMemory,
                 AvailablePhysicalMemory = ram.AvailablePhysicalMemory,
                 OSInfo         = Windows.OS.Instance.OsInfo,
                 CpuPerformance = cpu.GetTotalCpuUsage(),
                 // 以下三个属性的访问约耗时30毫秒所以放在Task中
                 ProcessMemoryMb        = VirtualRoot.ProcessMemoryMb,
                 ThreadCount            = VirtualRoot.ThreadCount,
                 HandleCount            = VirtualRoot.HandleCount,
                 AvailableFreeSpaceInfo = VirtualRoot.GetAvailableFreeSpaceInfo()
             };
         }
         catch (Exception e) {
             Logger.ErrorDebugLine(e);
         }
         _wsServerNodeRedis.SetAsync(nodeState).ContinueWith(t => {
             if (t.Exception != null)
             {
                 NTMinerConsole.UserFail("呼吸失败:" + t.Exception.Message);
             }
             else
             {
                 NTMinerConsole.UserOk("呼吸成功");
             }
             callback?.Invoke();
         });
     });
 }
        private void ReportNodeAsync(Action callback = null)
        {
            WsServerNodeState nodeState = null;

            try {
                int minerClientWsSessionCount = 0;
                int minerStudioWsSessionCount = 0;
                minerClientWsSessionCount = WsRoot.MinerClientSessionSet.WsSessionManager.Count;
                minerStudioWsSessionCount = WsRoot.MinerStudioSessionSet.WsSessionManager.Count;
                var ram = Windows.Ram.Instance;
                var cpu = Windows.Cpu.Instance;
                nodeState = new WsServerNodeState {
                    Address                   = ServerRoot.HostConfig.ThisServerAddress,
                    Description               = string.Empty,
                    MinerClientSessionCount   = WsRoot.MinerClientSessionSet.Count,
                    MinerStudioSessionCount   = WsRoot.MinerStudioSessionSet.Count,
                    MinerClientWsSessionCount = minerClientWsSessionCount,
                    MinerStudioWsSessionCount = minerStudioWsSessionCount,
                    Cpu = cpu.ToData(),
                    TotalPhysicalMemory     = ram.TotalPhysicalMemory,
                    AvailablePhysicalMemory = ram.AvailablePhysicalMemory,
                    OSInfo         = Windows.OS.Instance.OsInfo,
                    CpuPerformance = cpu.GetCurrentCpuUsage()
                };
            }
            catch (Exception e) {
                Logger.ErrorDebugLine(e);
            }
            _wsServerNodeRedis.SetAsync(nodeState).ContinueWith(t => {
                if (t.Exception != null)
                {
                    NTMinerConsole.UserFail("呼吸失败:" + t.Exception.Message);
                }
                else
                {
                    NTMinerConsole.UserOk("呼吸成功");
                }
                callback?.Invoke();
            });
        }