public static PerfomanceInfoData GetPerformanceInfo()
        {
            PerfomanceInfoData          data     = new PerfomanceInfoData();
            PsApiPerformanceInformation perfInfo = new PsApiPerformanceInformation();

            if (GetPerformanceInfo(out perfInfo, Marshal.SizeOf(perfInfo)))
            {
                /// data in pages
                data.CommitTotalPages = perfInfo.CommitTotal.ToInt64();
                data.CommitLimitPages = perfInfo.CommitLimit.ToInt64();
                data.CommitPeakPages  = perfInfo.CommitPeak.ToInt64();

                /// data in bytes
                Int64 pageSize = perfInfo.PageSize.ToInt64();
                data.PhysicalTotalBytes     = perfInfo.PhysicalTotal.ToInt64() * pageSize;
                data.PhysicalAvailableBytes = perfInfo.PhysicalAvailable.ToInt64() * pageSize;
                data.SystemCacheBytes       = perfInfo.SystemCache.ToInt64() * pageSize;
                data.KernelTotalBytes       = perfInfo.KernelTotal.ToInt64() * pageSize;
                data.KernelPagedBytes       = perfInfo.KernelPaged.ToInt64() * pageSize;
                data.KernelNonPagedBytes    = perfInfo.KernelNonPaged.ToInt64() * pageSize;
                data.PageSizeBytes          = pageSize;

                /// counters
                data.HandlesCount = perfInfo.HandlesCount;
                data.ProcessCount = perfInfo.ProcessCount;
                data.ThreadCount  = perfInfo.ThreadCount;
            }
            return(data);
        }
Beispiel #2
0
        private float GetMemoryUsage()
        {
            PerfomanceInfoData perfData = PsApiWrapper.GetPerformanceInfo();

            float free  = perfData.PhysicalAvailableBytes;
            float total = perfData.PhysicalTotalBytes;
            float usage = (total - free) / total;


            return(usage * 100);
        }