Esempio n. 1
0
 static void Main(string[] args)
 {
     CustomizedCommandLine(args);
     ProcessMonitorLib.CPUMonitor cpuMonitor = new ProcessMonitorLib.CPUMonitor(sProcessName, sPID);
     while (!cpuMonitor.MonitorStop)
     {
         cpuMonitor.Update();
     }
 }
Esempio n. 2
0
        static void Main(string[] args)
        {
            CustomizedCommandLine(args);
            Process[] proc = Process.GetProcessesByName("FCAT_VR_Capture");
            if (proc.Length > 0)
            {
                proc[0].Kill();
                proc[0].Close();
            }

            CreatSettingForGPUCapture();
            Process gpu_caputure = new Process();

            #region GPU Capture Start
            gpu_caputure.StartInfo.FileName = sGPUCapture;
            gpu_caputure.Start();
            #endregion

            Process target_process = new Process();
            #region Target Process Start
            target_process.Exited += new EventHandler(Target_process_Exited);
            target_process.EnableRaisingEvents = true;
            target_process.StartInfo.FileName  = sProcessFile;
            target_process.Start();
            #endregion

            // 等待10 直到讓就緒
            Thread.Sleep(20000);



#if WRITE_MODE
            #region Log File 起始設定
            var logFileName = Path.Combine(sLogFile, "cpu_mem.log");
            sWriter           = new StreamWriter(logFileName);
            sWriter.AutoFlush = true;
            //sWriter.Write("CPUElapsedTime\tCPUUsage\tCPUUsageMAX\t");
            //sWriter.WriteLine("MemElapsedTime\tMemoryUsage\tMemoryUsageMAX");
            sWriter.Write("Time\tCPUUsage\tCPUUsageMAX\t");
            sWriter.WriteLine("MemoryUsage\tMemoryUsageMAX");
            #endregion
#endif
            // 紀錄 GPU

            ProcessMonitorLib.CPUMonitor    cpu_monitor = new ProcessMonitorLib.CPUMonitor(target_process.ProcessName, target_process.Id);
            ProcessMonitorLib.MemoryMonitor mem_monitor = new ProcessMonitorLib.MemoryMonitor(target_process.ProcessName, target_process.Id);
            #region 執行 CPU Memory 監視
            cpu_monitor.Interval = sInterval;
            mem_monitor.Interval = sInterval;
            Thread t_cpu_monitor = new Thread(cpu_monitor.Watching);
            Thread t_mem_monitor = new Thread(mem_monitor.Watching);
            t_cpu_monitor.Start();
            t_mem_monitor.Start();
            while (!t_cpu_monitor.IsAlive || !t_mem_monitor.IsAlive)
            {
                Thread.Sleep(10);
            }
            #endregion


            Tools.PressScrollLock();
            sProcessStartTime = DateTime.Now;
            while (!cpu_monitor.MonitorStop && !mem_monitor.MonitorStop)
            {
                double times = (DateTime.Now.Ticks - sProcessStartTime.Ticks) / TimeSpan.TicksPerMillisecond;
                Console.Write(times.ToString("0.000") + "ms\t" + cpu_monitor.Usage.ToString("0.00") + "\t" + cpu_monitor.UsageMAX.ToString("0.00") + "\t");
                Console.WriteLine(mem_monitor.UsageMB.ToString("0.00") + "\t" + mem_monitor.UsageMAXMB.ToString("0.00"));
#if WRITE_MODE
                sWriter.Write(times.ToString() + "ms\t" + cpu_monitor.Usage.ToString() + "\t" + cpu_monitor.UsageMAX.ToString() + "\t");
                sWriter.WriteLine(mem_monitor.UsageB.ToString() + "\t" + mem_monitor.UsageMAXB.ToString());
#endif

                if (DateTime.Now >= sProcessStartTime.AddSeconds(DuringTime))
                {
                    break;
                }
                Thread.Sleep(sInterval);
            }

            // 停止紀錄 GPU
            Tools.PressScrollLock();
            Thread.Sleep(3000);

            cpu_monitor.RequestStop();
            mem_monitor.RequestStop();
            t_cpu_monitor.Join();
            t_cpu_monitor.Join();

            if (!gpu_caputure.HasExited)
            {
                gpu_caputure.Kill();
            }

            if (!target_process.HasExited)
            {
                target_process.Kill();
            }

            gpu_caputure.Close();
            target_process.Close();

            Console.WriteLine("Monitor Process Done!!");

#if WRITE_MODE
            sWriter.Close();
#endif
            System.Console.ReadLine();
        }