|
@@ -3,7 +3,6 @@
|
|
|
@using System.Net.Sockets
|
|
|
@using Masuit.MyBlogs.Core.Common
|
|
|
@using Masuit.Tools
|
|
|
-@using Masuit.Tools.Linq
|
|
|
@using System.IO
|
|
|
@inject IJSRuntime JS;
|
|
|
|
|
@@ -54,11 +53,11 @@
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>磁盘总空间</td>
|
|
|
- <th>@DriveInfo.GetDrives().Select(kv => kv.Name + " " + (kv.TotalSize * 1.0 / 1073741824).ToDecimal(2) + "GB").Join(" | ")</th>
|
|
|
+ <th>@_driveInfos.Select(kv => kv.Name + " " + (kv.TotalSize * 1.0 / 1073741824).ToDecimal(2) + "GB").Join(" | ")</th>
|
|
|
<td>磁盘剩余空间</td>
|
|
|
- <th>@DriveInfo.GetDrives().Select(kv => kv.Name + " " + (kv.TotalFreeSpace * 1.0 / 1073741824).ToDecimal(2) + "GB").Join(" | ")</th>
|
|
|
+ <th>@_driveInfos.Select(kv => kv.Name + " " + (kv.TotalFreeSpace * 1.0 / 1073741824).ToDecimal(2) + "GB").Join(" | ")</th>
|
|
|
<td>磁盘使用率</td>
|
|
|
- <th>@DriveInfo.GetDrives().Select(kv => kv.Name + " " + (kv.AvailableFreeSpace * 1m / kv.TotalSize).ToString("P")).Join(" | ")</th>
|
|
|
+ <th>@_driveInfos.Select(kv => kv.Name + " " + (kv.AvailableFreeSpace * 1m / kv.TotalSize).ToString("P")).Join(" | ")</th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>MAC地址</td>
|
|
@@ -123,6 +122,7 @@
|
|
|
private readonly RamInfo memory = SystemInfo.GetRamInfo();
|
|
|
private readonly IList<string> macs = SystemInfo.GetMacAddress();
|
|
|
private readonly IList<string> ips = SystemInfo.GetLocalIPs().OrderBy(u => u.Address.AddressFamily != AddressFamily.InterNetwork).Select(a => a.Address.ToString()).ToList();
|
|
|
+ private readonly DriveInfo[] _driveInfos = DriveInfo.GetDrives().Where(d => d.IsReady).ToArray();
|
|
|
|
|
|
protected override void OnInitialized()
|
|
|
{
|
|
@@ -138,7 +138,7 @@
|
|
|
}
|
|
|
|
|
|
[JSInvokable]
|
|
|
- public static PerfCounter.PerformanceCounter GetCurrentPerformanceCounter()
|
|
|
+ public static PerformanceCounter GetCurrentPerformanceCounter()
|
|
|
{
|
|
|
return PerfCounter.GetCurrentPerformanceCounter();
|
|
|
}
|
|
@@ -151,67 +151,69 @@
|
|
|
|
|
|
public Dictionary<string, dynamic> GetCounterPercent()
|
|
|
{
|
|
|
+ var counters = PerfCounter.List;
|
|
|
+ var count = counters.Count;
|
|
|
return new()
|
|
|
{
|
|
|
["CPU使用率(%)"] = new
|
|
|
{
|
|
|
- p50 = PerfCounter.List.OrderByDescending(c => c.CpuLoad).Take(PerfCounter.List.Count / 2).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
- p75 = PerfCounter.List.OrderByDescending(c => c.CpuLoad).Take(PerfCounter.List.Count / 4).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
- p90 = PerfCounter.List.OrderByDescending(c => c.CpuLoad).Take(PerfCounter.List.Count / 10).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
- p99 = PerfCounter.List.OrderByDescending(c => c.CpuLoad).Take(PerfCounter.List.Count / 100).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
- p999 = PerfCounter.List.OrderByDescending(c => c.CpuLoad).Take(PerfCounter.List.Count / 1000).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
- average = PerfCounter.List.Average(c => c.CpuLoad).ToString("N2"),
|
|
|
- stdev = PerfCounter.List.StandardDeviation(c => c.CpuLoad).ToString("N2"),
|
|
|
+ p50 = counters.OrderByDescending(c => c.CpuLoad).Take(count / 2).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
+ p75 = counters.OrderByDescending(c => c.CpuLoad).Take(count / 4).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
+ p90 = counters.OrderByDescending(c => c.CpuLoad).Take(count / 10).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
+ p99 = counters.OrderByDescending(c => c.CpuLoad).Take(count / 100).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
+ p999 = counters.OrderByDescending(c => c.CpuLoad).Take(count / 1000).MinOrDefault(c => c.CpuLoad).ToString("N2"),
|
|
|
+ average = counters.Average(c => c.CpuLoad).ToString("N2"),
|
|
|
+ stdev = counters.StandardDeviation(c => c.CpuLoad).ToString("N2"),
|
|
|
},
|
|
|
["内存使用率(%)"] = new
|
|
|
{
|
|
|
- p50 = PerfCounter.List.OrderByDescending(c => c.MemoryUsage).Take(PerfCounter.List.Count / 2).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
- p75 = PerfCounter.List.OrderByDescending(c => c.MemoryUsage).Take(PerfCounter.List.Count / 4).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
- p90 = PerfCounter.List.OrderByDescending(c => c.MemoryUsage).Take(PerfCounter.List.Count / 10).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
- p99 = PerfCounter.List.OrderByDescending(c => c.MemoryUsage).Take(PerfCounter.List.Count / 100).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
- p999 = PerfCounter.List.OrderByDescending(c => c.MemoryUsage).Take(PerfCounter.List.Count / 1000).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
- average = PerfCounter.List.Average(c => c.MemoryUsage).ToString("N2"),
|
|
|
- stdev = PerfCounter.List.StandardDeviation(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ p50 = counters.OrderByDescending(c => c.MemoryUsage).Take(count / 2).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ p75 = counters.OrderByDescending(c => c.MemoryUsage).Take(count / 4).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ p90 = counters.OrderByDescending(c => c.MemoryUsage).Take(count / 10).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ p99 = counters.OrderByDescending(c => c.MemoryUsage).Take(count / 100).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ p999 = counters.OrderByDescending(c => c.MemoryUsage).Take(count / 1000).MinOrDefault(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ average = counters.Average(c => c.MemoryUsage).ToString("N2"),
|
|
|
+ stdev = counters.StandardDeviation(c => c.MemoryUsage).ToString("N2"),
|
|
|
},
|
|
|
["磁盘读(KBps)"] = new
|
|
|
{
|
|
|
- p50 = PerfCounter.List.OrderByDescending(c => c.DiskRead).Take(PerfCounter.List.Count / 2).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
- p75 = PerfCounter.List.OrderByDescending(c => c.DiskRead).Take(PerfCounter.List.Count / 4).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
- p90 = PerfCounter.List.OrderByDescending(c => c.DiskRead).Take(PerfCounter.List.Count / 10).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
- p99 = PerfCounter.List.OrderByDescending(c => c.DiskRead).Take(PerfCounter.List.Count / 100).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
- p999 = PerfCounter.List.OrderByDescending(c => c.DiskRead).Take(PerfCounter.List.Count / 1000).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
- average = PerfCounter.List.Average(c => c.DiskRead).ToString("N2"),
|
|
|
- stdev = PerfCounter.List.StandardDeviation(c => c.DiskRead).ToString("N2"),
|
|
|
+ p50 = counters.OrderByDescending(c => c.DiskRead).Take(count / 2).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
+ p75 = counters.OrderByDescending(c => c.DiskRead).Take(count / 4).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
+ p90 = counters.OrderByDescending(c => c.DiskRead).Take(count / 10).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
+ p99 = counters.OrderByDescending(c => c.DiskRead).Take(count / 100).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
+ p999 = counters.OrderByDescending(c => c.DiskRead).Take(count / 1000).MinOrDefault(c => c.DiskRead).ToString("N2"),
|
|
|
+ average = counters.Average(c => c.DiskRead).ToString("N2"),
|
|
|
+ stdev = counters.StandardDeviation(c => c.DiskRead).ToString("N2"),
|
|
|
},
|
|
|
["磁盘写(KBps)"] = new
|
|
|
{
|
|
|
- p50 = PerfCounter.List.OrderByDescending(c => c.DiskWrite).Take(PerfCounter.List.Count / 2).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
- p75 = PerfCounter.List.OrderByDescending(c => c.DiskWrite).Take(PerfCounter.List.Count / 4).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
- p90 = PerfCounter.List.OrderByDescending(c => c.DiskWrite).Take(PerfCounter.List.Count / 10).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
- p99 = PerfCounter.List.OrderByDescending(c => c.DiskWrite).Take(PerfCounter.List.Count / 100).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
- p999 = PerfCounter.List.OrderByDescending(c => c.DiskWrite).Take(PerfCounter.List.Count / 1000).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
- average = PerfCounter.List.Average(c => c.DiskWrite).ToString("N2"),
|
|
|
- stdev = PerfCounter.List.StandardDeviation(c => c.DiskWrite).ToString("N2")
|
|
|
+ p50 = counters.OrderByDescending(c => c.DiskWrite).Take(count / 2).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
+ p75 = counters.OrderByDescending(c => c.DiskWrite).Take(count / 4).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
+ p90 = counters.OrderByDescending(c => c.DiskWrite).Take(count / 10).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
+ p99 = counters.OrderByDescending(c => c.DiskWrite).Take(count / 100).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
+ p999 = counters.OrderByDescending(c => c.DiskWrite).Take(count / 1000).MinOrDefault(c => c.DiskWrite).ToString("N2"),
|
|
|
+ average = counters.Average(c => c.DiskWrite).ToString("N2"),
|
|
|
+ stdev = counters.StandardDeviation(c => c.DiskWrite).ToString("N2")
|
|
|
},
|
|
|
["网络下载(KBps)"] = new
|
|
|
{
|
|
|
- p50 = PerfCounter.List.OrderByDescending(c => c.Download).Take(PerfCounter.List.Count / 2).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
- p75 = PerfCounter.List.OrderByDescending(c => c.Download).Take(PerfCounter.List.Count / 4).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
- p90 = PerfCounter.List.OrderByDescending(c => c.Download).Take(PerfCounter.List.Count / 10).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
- p99 = PerfCounter.List.OrderByDescending(c => c.Download).Take(PerfCounter.List.Count / 100).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
- p999 = PerfCounter.List.OrderByDescending(c => c.Download).Take(PerfCounter.List.Count / 1000).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
- average = PerfCounter.List.Average(c => c.Download).ToString("N2"),
|
|
|
- stdev = PerfCounter.List.StandardDeviation(c => c.Download).ToString("N2")
|
|
|
+ p50 = counters.OrderByDescending(c => c.Download).Take(count / 2).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
+ p75 = counters.OrderByDescending(c => c.Download).Take(count / 4).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
+ p90 = counters.OrderByDescending(c => c.Download).Take(count / 10).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
+ p99 = counters.OrderByDescending(c => c.Download).Take(count / 100).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
+ p999 = counters.OrderByDescending(c => c.Download).Take(count / 1000).MinOrDefault(c => c.Download).ToString("N2"),
|
|
|
+ average = counters.Average(c => c.Download).ToString("N2"),
|
|
|
+ stdev = counters.StandardDeviation(c => c.Download).ToString("N2")
|
|
|
},
|
|
|
["网络上行(KBps)"] = new
|
|
|
{
|
|
|
- p50 = PerfCounter.List.OrderByDescending(c => c.Upload).Take(PerfCounter.List.Count / 2).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
- p75 = PerfCounter.List.OrderByDescending(c => c.Upload).Take(PerfCounter.List.Count / 4).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
- p90 = PerfCounter.List.OrderByDescending(c => c.Upload).Take(PerfCounter.List.Count / 10).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
- p99 = PerfCounter.List.OrderByDescending(c => c.Upload).Take(PerfCounter.List.Count / 100).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
- p999 = PerfCounter.List.OrderByDescending(c => c.Upload).Take(PerfCounter.List.Count / 1000).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
- average = PerfCounter.List.Average(c => c.Upload).ToString("N2"),
|
|
|
- stdev = PerfCounter.List.StandardDeviation(c => c.Upload).ToString("N2")
|
|
|
+ p50 = counters.OrderByDescending(c => c.Upload).Take(count / 2).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
+ p75 = counters.OrderByDescending(c => c.Upload).Take(count / 4).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
+ p90 = counters.OrderByDescending(c => c.Upload).Take(count / 10).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
+ p99 = counters.OrderByDescending(c => c.Upload).Take(count / 100).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
+ p999 = counters.OrderByDescending(c => c.Upload).Take(count / 1000).MinOrDefault(c => c.Upload).ToString("N2"),
|
|
|
+ average = counters.Average(c => c.Upload).ToString("N2"),
|
|
|
+ stdev = counters.StandardDeviation(c => c.Upload).ToString("N2")
|
|
|
}
|
|
|
};
|
|
|
}
|