2010-06-10 33 views
5

Tôi cần một cách đơn giản để kiểm tra số lượng RAM và CPU nhanh của máy chủ. Tôi đã thử WMI tuy nhiên mã tôi đang sử dụngLàm thế nào để có được tốc độ CPU và tổng số ram vật lý trong C#?

private long getCPU() 
{ 
    ManagementClass mObject = new ManagementClass("Win32_Processor"); 
    mObject.Get(); 
    return (long)mObject.Properties["MaxClockSpeed"].Value; 

} 

Ném ngoại lệ tham chiếu null. Hơn nữa, các truy vấn WMI hơi chậm và tôi cần thực hiện một số để có được tất cả các thông số kỹ thuật. Có cách nào tốt hơn?

Trả lời

6

http://dotnet-snippets.com/dns/get-the-cpu-speed-in-mhz-SID575.aspx

using System.Management; 

public uint CPUSpeed() 
{ 
    ManagementObject Mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'"); 
    uint sp = (uint)(Mo["CurrentClockSpeed"]); 
    Mo.Dispose(); 
    return sp; 
} 

RAM có thể được tìm thấy trong câu hỏi này SO: How do you get total amount of RAM the computer has?

+0

Cảm ơn, tôi đã sử dụng mã này cho tốc độ CPU. – edude05

+0

Không chắc chắn nếu "ManagementObject" lớp là cách tốt nhất để đi vì nó phụ thuộc vào dịch vụ Windows Management Instrumentation. Nếu dịch vụ bị ngừng hoặc không chạy, mã của bạn sẽ không hoạt động như mong đợi. Tôi thích phương pháp Counter Counter nhưng muốn biết mức sử dụng phổ biến của ManagementObject là như thế nào? –

2

Bạn nên sử dụng PerformanceCounter lớp trong System.Diagnostics

PerformanceCounter cpuCounter; 
PerformanceCounter ramCounter; 

cpuCounter = new PerformanceCounter(); 

cpuCounter.CategoryName = "Processor"; 
cpuCounter.CounterName = "% Processor Time"; 
cpuCounter.InstanceName = "_Total"; 

ramCounter = new PerformanceCounter("Memory", "Available MBytes"); 


public string getCurrentCpuUsage(){ 
      cpuCounter.NextValue()+"%"; 
} 

public string getAvailableRAM(){ 
      ramCounter.NextValue()+"MB"; 
} 
+3

Mã này không xác định Bộ vi xử lý và số lượng RAM. Nó cho thấy có bao nhiêu RAM (Bộ xử lý) có sẵn (được sử dụng) ngay bây giờ. –

1

nhiều về bộ vi xử lý bao gồm tốc độ của nó trong Mhz là có sẵn theo HKEY_LOCAL_MACHINE \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor

Tôi đang chạy 2 Win7x64 chiếc và vì lý do nào đó truy vấn WMI hiển thị số mơ hồ lần đầu tiên tôi chạy mã và tốc độ xử lý chính xác trong lần chạy thứ hai?

Khi nói đến hiệu suất quầy, tôi đã làm việc rất nhiều với các quầy mạng và có kết quả chính xác và cuối cùng đã tìm một giải pháp tốt hơn, vì vậy tôi không tin tưởng họ!

+0

Bạn đề cập đến việc bạn đã sử dụng một giải pháp khác để theo dõi các bộ đếm mạng. Bạn có muốn chia sẻ những gì bạn đã sử dụng không? –

+0

hey @JimScott, haha ​​khá là một câu chuyện cũ thực sự. Ứng dụng đã thực hiện một số giám sát băng thông như là một phần của công việc của nó. Tôi tin rằng tôi nhận thấy các bộ đếm hiệu suất ** cho mạng ** đã tắt trong các trường hợp tức thời và đã viết một cái gì đó cho tôi trung bình nhiều cuộc gọi theo thời gian. Hy vọng rằng sẽ giúp trong trường hợp của bạn. – gideon

Các vấn đề liên quan