-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed
Description
.NET Core Process APIs not Consistent (or always useful) in all situations
The Process APIs should return accurate and useful values in all situations. I wrote a simple app that uses all the memory APIs I could find. I am happy to add more if people direct me to them.
Major take-aways:
- Multiple properties return a value of 0 on Unix.
Process.MaxWorkingSet!=memory.limit_in_byteswhen memory limitedProcess.WorkingSet64!=memory.usage_in_bytes
Related issues:
On Windows
C:\testapps\memory>dotnet run
***Configuration**
Build: .NET Core 3.0.0-preview4-27514-07
OS: Microsoft Windows 10.0.17763
OS Arch: X64
***Working set****
Process.MinWorkingSet: 204800
Process.MaxWorkingSet: 1413120
Process.PeakWorkingSet64: 15667200
Process.WorkingSet64: 15663104
***Memory*********
Process.PeakPagedMemorySize64: 267993088
Process.PrivateMemorySize64: 267993088
Process.NonpagedSystemMemorySize64: 42288
Process.PagedMemorySize64: 267993088
Process.PagedSystemMemorySize64: 138040
***Virtual memory
Process.VirtualMemorySize64: 2307580309504
Process.PeakVirtualMemorySize64: 2307580309504On Linux
rich@tofino:~/memory$ dotnet run
***Configuration**
Build: .NET Core 3.0.0-preview4-27514-07
OS: Linux 3.10.105-bsp-1.2 dotnet/corefx#2 SMP PREEMPT Sat Oct 27 19:24:05 IST 2018
OS Arch: Arm64
***Working set****
Process.MinWorkingSet: 0
Process.MaxWorkingSet: 9223372036854775807
Process.PeakWorkingSet64: 0
Process.WorkingSet64: 18436096
***Memory*********
Process.PeakPagedMemorySize64: 0
Process.PrivateMemorySize64: 0
Process.NonpagedSystemMemorySize64: 0
Process.PagedMemorySize64: 0
Process.PagedSystemMemorySize64: 0
***Virtual memory
Process.VirtualMemorySize64: 2735525888
Process.PeakVirtualMemorySize64: 0
***CGroup*********
CGroup usage: 1644941312
CGroup memory limit: 9223372036854775807On macOS
Richards-MacBook-Pro:memory rich$ dotnet run
***Configuration**
Build: .NET Core 3.0.0-preview4-27514-07
OS: Darwin 18.2.0 Darwin Kernel Version 18.2.0: Thu Dec 20 20:46:53 PST 2018; root:xnu-4903.241.1~1/RELEASE_X86_64
OS Arch: X64
***Working set****
Process.MinWorkingSet: 0
Process.MaxWorkingSet: 9223372036854775807
Process.PeakWorkingSet64: 0
Process.WorkingSet64: 18923520
***Memory*********
Process.PeakPagedMemorySize64: 0
Process.PrivateMemorySize64: 0
Process.NonpagedSystemMemorySize64: 0
Process.PagedMemorySize64: 0
Process.PagedSystemMemorySize64: 0
***Virtual memory
Process.VirtualMemorySize64: 6893395968
Process.PeakVirtualMemorySize64: 0On WSL
rich@phantomlake:/mnt/c/testapps/memory$ ~/dotnet/dotnet run
***Configuration**
Build: .NET Core 3.0.0-preview4-27514-07
OS: Linux 4.4.0-17763-Microsoft dotnet/corefx#253-Microsoft Mon Dec 31 17:49:00 PST 2018
OS Arch: X64
***Working set****
Process.MinWorkingSet: 0
Process.MaxWorkingSet: 9223372036854775807
Process.PeakWorkingSet64: 0
Process.WorkingSet64: 17985536
***Memory*********
Process.PeakPagedMemorySize64: 0
Process.PrivateMemorySize64: 0
Process.NonpagedSystemMemorySize64: 0
Process.PagedMemorySize64: 0
Process.PagedSystemMemorySize64: 0
***Virtual memory
Process.VirtualMemorySize64: 84865474560
Process.PeakVirtualMemorySize64: 0On Linux running in a Debian container on Windows
C:\testapps\memory>docker run --rm -v c:\testapps\memory:/app -w /app mcr.microsoft.com/dotnet/core-nightly/sdk:3.0 dotnet run
***Configuration**
Build: .NET Core 3.0.0-preview4-27508-07
OS: Linux 4.9.125-linuxkit dotnet/corefx#1 SMP Fri Sep 7 08:20:28 UTC 2018
OS Arch: X64
***Working set****
Process.MinWorkingSet: 0
Process.MaxWorkingSet: 9223372036854775807
Process.PeakWorkingSet64: 0
Process.WorkingSet64: 25559040
***Memory*********
Process.PeakPagedMemorySize64: 0
Process.PrivateMemorySize64: 0
Process.NonpagedSystemMemorySize64: 0
Process.PagedMemorySize64: 0
Process.PagedSystemMemorySize64: 0
***Virtual memory
Process.VirtualMemorySize64: 2689052672
Process.PeakVirtualMemorySize64: 0
***CGroup*********
CGroup usage: 76718080
CGroup memory limit: 9223372036854771712On Linux running in a Debian container on Windows -- memory-limited to 100MB
C:\testapps\memory>docker run -m 100mb --rm -v c:\testapps\memory:/app -w /app mcr.microsoft.com/dotnet/core-nightly/sdk:3.0 dotnet run
***Configuration**
Build: .NET Core 3.0.0-preview4-27508-07
OS: Linux 4.9.125-linuxkit dotnet/corefx#1 SMP Fri Sep 7 08:20:28 UTC 2018
OS Arch: X64
***Working set****
Process.MinWorkingSet: 0
Process.MaxWorkingSet: 9223372036854775807
Process.PeakWorkingSet64: 0
Process.WorkingSet64: 25604096
***Memory*********
Process.PeakPagedMemorySize64: 0
Process.PrivateMemorySize64: 0
Process.NonpagedSystemMemorySize64: 0
Process.PagedMemorySize64: 0
Process.PagedSystemMemorySize64: 0
***Virtual memory
Process.VirtualMemorySize64: 2688528384
Process.PeakVirtualMemorySize64: 0
***CGroup*********
CGroup usage: 72470528
CGroup memory limit: 104857600Reactions are currently unavailable