CSHARP   14

program

Guest on 24th November 2022 01:28:56 AM

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Threading.Tasks;
  7. using XSockets.Client;
  8. using XSockets.Core.Common.Socket.Event.Interface;
  9. using MySql.Data.MySqlClient;
  10. using System.Diagnostics;
  11. using Toolbox;
  12.  
  13.  
  14.  
  15. namespace H_Man
  16. {
  17.   class Program
  18.   {
  19.     static void Main(string[] args)
  20.     {                                          
  21.                         try
  22.                         {
  23.                                 string command = string.Empty;
  24.                                 if (args.Length > 0)
  25.                                 {
  26.                                         command = args[0];
  27.                                 }
  28.  
  29.                                 DatabaseManager dbManager = new DatabaseManager(true);
  30.                                 DecisionMaker decisionMaker = new DecisionMaker ();
  31.                                 //HostManager hostManager = new HostManager();
  32.                                 //HostManager hostManager = new HostManager(decisionMaker);
  33.                                 HostManager hostManager = new HostManager(dbManager, decisionMaker);
  34.                                 // This is required to save XenMon log files into DB
  35.                                 //ResourceHandler.DBManager = dbManager;
  36.                                 Credit2Scheduler scheduler = new Credit2Scheduler();
  37.  
  38.                                 // Step Xen: Set scheduler parameters
  39.                                 //                                      - to the values for test
  40.                                 if (command == "reset")
  41.                                 {
  42.                                         ResourceHandler.ReadAllVMs();
  43.                                         scheduler.ResetParameters();
  44.                                         Logger.Log("Reseted scheduler parameters to their defaults");
  45.                                 }
  46.  
  47.                                 // Step Xen: Set scheduler parameters
  48.                                 //                                      - to the values for test
  49.                                 if (command == "report")
  50.                                 {
  51.                                         string subCommand = args[1];
  52.  
  53.                                         if (subCommand == "waitingtime")
  54.                                         {
  55.                                                 if (hostManager.IsHostReadyToMonitor)
  56.                                                 {
  57.                                                         Logger.Log("Reported waiting time. Please back up hosthistory.log!");
  58.                                                         //ResourceHandler.TotalHostWaitingTime();
  59.                                                         ResourceHandler.ReportWaitingTime();
  60.                                                 }
  61.                                         }
  62.                                 }
  63.  
  64.                                 // Step Xen: Load certain scheduler parameters
  65.                                 //                                      - to the values for test
  66.                                 if (command == "load")
  67.                                 {
  68.                                         if (hostManager.IsHostReadyToMonitor)
  69.                                         {
  70.                                                 ResourceHandler.ReadAllVMs();
  71.                                                 hostManager.LoadConfig(int.Parse(args[1]));
  72.                                                 Logger.Log("Loaded scheduler parameters for cluster number specified");
  73.                                         }
  74.                                 }
  75.  
  76.                                 // Step Xen: Set scheduler parameters
  77.                                 //                                      - to the values for test
  78.                                 if (command == "set")
  79.                                 {
  80.                                         ResourceHandler.ReadAllVMs();
  81.                                         scheduler.SetParameters(int.Parse(args[1]), int.Parse(args[2]), int.Parse(args[3]), int.Parse(args[4]));
  82.                                         Logger.Log("Set scheduler parameters");
  83.                                 }
  84.  
  85.                                 // Step Log: Start Xenmon for logging
  86.                                 //                                      - Run XenMon for a while
  87.                                 //                                      - Stop XenMon
  88.                                 if (command == "runxenmon")
  89.                                 {
  90.                                         hostManager.DeleteXenMonLogFiles();
  91.                                         hostManager.StartXenMon();
  92.                                         Console.WriteLine("Logging internal scheduler metrics for a minute...");
  93.                                         Thread.Sleep(int.Parse(args[1]) * 1000);
  94.                                         hostManager.StopXenMon();
  95.                                 }
  96.  
  97.  
  98.                                 // Step 1 : Cluster Host Machines (Offline)
  99.                                 //                              - Monitor Resource Usage
  100.                                 //                              - Save it into Database
  101.                                 if (command == "discoverer")
  102.                                 {
  103.                                         hostManager.StartHandling ();
  104.                                         Console.WriteLine("Press enter to exit stop H-Man");
  105.                                         Console.ReadLine();
  106.                                         hostManager.StopHandling ();
  107.                                 }
  108.  
  109.                                 // Step 2 : Find Optimum Configuration of Xen Credit Scheduler2 (Offline)
  110.                                 //                              - Set up host machine compliant with the center of cluster
  111.                                 //                              - Employ simulated annealing
  112.                                 if (command == "optimizer")
  113.                                 {
  114.                                         hostManager.FindClusterOptimumConfigurations ();
  115.                                 }
  116.  
  117.  
  118.                                 // Step 3 : Load Scheduler Configuration at run-time (Online)
  119.                                 //                              - Monitor host machine resource usage
  120.                                 //                              - Classify host machine
  121.                                 //                              - Load the configuration
  122.                                 if (command == "observer")
  123.                                 {
  124.                                         hostManager.IsClassificationEnabled = true;
  125.                                         hostManager.StartHandling ();
  126.                                         Console.WriteLine("Press enter to exit stop H-Man");
  127.                                         Console.ReadLine();
  128.                                         hostManager.StopHandling ();
  129.                                 }
  130.                         }
  131.                         catch (Exception exc)
  132.                         {
  133.                                 Logger.Log(exc);
  134.                         }
  135.     }
  136.   }
  137. }

Raw Paste


Login or Register to edit or fork this paste. It's free.