2011-12-28 15 views
8

Próbuję zbudować moduł równoważenia obciążenia dla programu działającego na dwóch różnych serwerach.Jak poznać przepustowość sieci używaną w danym czasie?

Do tej pory mój system równoważenia obciążenia sprawdza tylko użycie procesora dla każdego serwera przy użyciu instancji PerformanceCounter w każdym programie serwera.

Chciałbym również sprawdzić wykorzystanie przepustowości każdego serwera, jak mogę to sprawdzić?

(jest to prawdopodobnie zrobić również za pomocą PerformanceCounter ale jestem zaznajomiony z jego użytkowania)

+2

spojrzeć na to pytanie: http://stackoverflow.com/questions/442409/c-bandwidth – Moonlight

Odpowiedz

17

Dzięki Moonlight Znalazłem ten http://www.keyvan.ms/how-to-calculate-network-utilization-in-net

public double getNetworkUtilization(string networkCard){ 

      const int numberOfIterations = 10; 

      PerformanceCounter bandwidthCounter = new PerformanceCounter("Network Interface", "Current Bandwidth", networkCard); 
      float bandwidth = bandwidthCounter.NextValue();//valor fixo 10Mb/100Mn/ 

      PerformanceCounter dataSentCounter = new PerformanceCounter("Network Interface", "Bytes Sent/sec", networkCard); 

      PerformanceCounter dataReceivedCounter = new PerformanceCounter("Network Interface", "Bytes Received/sec", networkCard); 

      float sendSum = 0; 
      float receiveSum = 0; 

      for (int index = 0; index < numberOfIterations; index++) 
      { 
       sendSum += dataSentCounter.NextValue(); 
       receiveSum += dataReceivedCounter.NextValue(); 
      } 
      float dataSent = sendSum; 
      float dataReceived = receiveSum; 


      double utilization = (8 * (dataSent + dataReceived))/(bandwidth * numberOfIterations) * 100; 
      return utilization; 
     } 

znaleźć dostępne karty sieciowe to kod pomógł mi:

public void printNetworkCards() 
     { 
      PerformanceCounterCategory category = new PerformanceCounterCategory("Network Interface"); 
      String[] instancename = category.GetInstanceNames(); 

      foreach (string name in instancename) 
      { 
       Console.WriteLine(name); 
      } 
     } 
Powiązane problemy