public void Show_Raw_Process_Usage()
        {
            if (CrossInfo.ThePlatform == CrossInfo.Platform.Windows)
            {
                Console.WriteLine($"LinuxResourceUsageReader is not supported on platform {CrossInfo.ThePlatform}");
                return;
            }

            var resources = LinuxResourceUsageInterop.GetRawUsageResources(LinuxResourceUsageInterop.RUSAGE_SELF);

            Console.WriteLine($"GetRawUsageResources(RUSAGE_SELF):{Environment.NewLine}{AsString(resources)}");
        }
Exemple #2
0
 private static unsafe CpuUsage?GetLinuxCpuUsageByScope(int scope)
 {
     if (IntPtr.Size == 4)
     {
         int *rawResourceUsage = stackalloc int[RESOURCE_USAGE_FIELDS_COUNT];
         int  result           = LinuxResourceUsageInterop.getrusage_heapless(scope, new IntPtr(rawResourceUsage));
         if (result != 0)
         {
             return(null);
         }
         return(new CpuUsage()
         {
             UserUsage = new TimeValue()
             {
                 Seconds = *rawResourceUsage, MicroSeconds = rawResourceUsage[1]
             },
             KernelUsage = new TimeValue()
             {
                 Seconds = rawResourceUsage[2], MicroSeconds = rawResourceUsage[3]
             },
         });
     }
     else
     {
         long *rawResourceUsage = stackalloc long[RESOURCE_USAGE_FIELDS_COUNT];
         int   result           = LinuxResourceUsageInterop.getrusage_heapless(scope, new IntPtr(rawResourceUsage));
         if (result != 0)
         {
             return(null);
         }
         // microseconds are 4 bytes length on mac os and 8 bytes on linux
         return(new CpuUsage()
         {
             UserUsage = new TimeValue()
             {
                 Seconds = *rawResourceUsage, MicroSeconds = rawResourceUsage[1] & 0xFFFFFFFF
             },
             KernelUsage = new TimeValue()
             {
                 Seconds = rawResourceUsage[2], MicroSeconds = rawResourceUsage[3] & 0xFFFFFFFF
             },
         });
     }
 }
Exemple #3
0
 internal static unsafe PosixResourceUsage?GetResourceUsageByScope(int scope)
 {
     if (IntPtr.Size == 4)
     {
         int *rawResourceUsage = stackalloc int[RESOURCE_USAGE_FIELDS_COUNT];
         int  result           = LinuxResourceUsageInterop.getrusage_heapless(scope, new IntPtr(rawResourceUsage));
         if (result != 0)
         {
             return(null);
         }
         return(new PosixResourceUsage()
         {
             UserUsage = new TimeValue()
             {
                 Seconds = *rawResourceUsage, MicroSeconds = rawResourceUsage[1]
             },
             KernelUsage = new TimeValue()
             {
                 Seconds = rawResourceUsage[2], MicroSeconds = rawResourceUsage[3]
             },
             MaxRss = rawResourceUsage[4],
             SoftPageFaults = rawResourceUsage[8],
             HardPageFaults = rawResourceUsage[9],
             Swaps = rawResourceUsage[10],
             ReadOps = rawResourceUsage[11],
             WriteOps = rawResourceUsage[12],
             SentIpcMessages = rawResourceUsage[13],
             ReceivedIpcMessages = rawResourceUsage[14],
             ReceivedSignals = rawResourceUsage[15],
             VoluntaryContextSwitches = rawResourceUsage[16],
             InvoluntaryContextSwitches = rawResourceUsage[17],
         });
     }
     else
     {
         long *rawResourceUsage = stackalloc long[RESOURCE_USAGE_FIELDS_COUNT];
         int   result           = LinuxResourceUsageInterop.getrusage_heapless(scope, new IntPtr(rawResourceUsage));
         if (result != 0)
         {
             return(null);
         }
         // microseconds are 4 bytes length on mac os and 8 bytes on linux
         return(new PosixResourceUsage()
         {
             UserUsage = new TimeValue()
             {
                 Seconds = *rawResourceUsage, MicroSeconds = rawResourceUsage[1] & 0xFFFFFFFF
             },
             KernelUsage = new TimeValue()
             {
                 Seconds = rawResourceUsage[2], MicroSeconds = rawResourceUsage[3] & 0xFFFFFFFF
             },
             MaxRss = rawResourceUsage[4],
             SoftPageFaults = rawResourceUsage[8],
             HardPageFaults = rawResourceUsage[9],
             Swaps = rawResourceUsage[10],
             ReadOps = rawResourceUsage[11],
             WriteOps = rawResourceUsage[12],
             SentIpcMessages = rawResourceUsage[13],
             ReceivedIpcMessages = rawResourceUsage[14],
             ReceivedSignals = rawResourceUsage[15],
             VoluntaryContextSwitches = rawResourceUsage[16],
             InvoluntaryContextSwitches = rawResourceUsage[17],
         });
     }
 }