Skip to Content
Documentation07 · AdministrationSystem monitoring and memory analysis
On this page

System Monitoring and Memory Analysis

Open System Management → System Monitor to inspect gateway process resources, memory sources, hardware, and networking. Check the sample time before comparing successive samples. Device health and collection paths are covered in System Overview.

Resident mappings and memory categories in System Monitor

Sampling and navigation

  1. Wait for the first sample and check its time at the top right.
  2. Select an automatic refresh interval. Pausing the page does not stop collection or forwarding.
  3. Use Refresh Sample to obtain an available sample. Resources are collected at most once every 30 seconds, so repeated clicks can return the same sample.
  4. Select a tab below. Permissions determine available content; —, unavailable values, and collection errors do not mean zero.
TabPurpose
GC and MemoryResident mappings, container memory, managed heaps, allocation rates, collection counts, and pauses.
System ResourcesProcess uptime, threads, handles, thread pools, disk I/O, and network rates.
Hardware HealthDevice and firmware details, per-core load, frequency, temperature, power, and memory pressure.
Network InterfacesLink state, IPv4/IPv6, rates, errors, and checks against an upstream TCP port.
Field InterfacesUSB, serial, CAN, and driver bindings reported by the operating system.
Disks and FlashFile-system capacity, disk I/O, and available SMART or flash lifetime data.
Frontend / Backend PackagesRelease versions, dependencies, build files, or loaded assemblies.
Runtime EnvironmentOperating system, .NET runtime, architecture, and GC settings.

Distinguish memory scopes

Process mappings and managed memory

MetricMeaning
Process working setPages resident in physical memory for this process, including managed heaps and other mappings.
Virtual memoryVirtual address space; it is not physical memory consumption.
Private commit / private memoryOperating-system measurements of private process memory. Definitions vary by platform.
Managed objects / GC committedEstimated managed object size and committed GC space, both within the process.
RSS / PSSRSS counts resident mappings and can include shared or repeated mappings. PSS apportions shared pages.
Private resident memoryResident mapped pages exclusive to the process.
Mapping categoriesImage files, ordinary files, memfd, anonymous mappings, and system-identified stacks.
Cumulative JIT IL / methodsCompilation activity. IL bytes do not measure generated native-code memory.

Expand Resident File Mapping Details to inspect the largest files. Entries with the same name are combined within each category, and only the largest entries are shown. Windows supplies available resident-file data without PSS or virtual sizes for this list.

Managed heaps are already included in process memory. Do not add working set, RSS, managed objects, and GC committed together. Use suitable native-memory tools to identify native libraries, native runtime heaps, or unidentified stacks in anonymous mappings.

Linux containers and the host

In Docker/cgroup environments, compare control-group usage with its limit, then inspect anonymous memory, file cache, shared memory, and kernel categories. A control group can contain multiple processes. File mappings and shared memory can be cache subcategories and must not be added twice.

Host file cache and kernel statistics describe the whole machine, even when visible inside a container. Diagnose a container limit using control-group measurements, then compare process and host scopes separately.

Memory trends offer 5-, 15-, and 60-minute windows containing only collected samples; unobserved periods are not backfilled. Accumulate several samples before comparing managed objects with working set. Use Left/Right to move between samples and Home/End for the first or last point.

Generation sizes and fragmentation come from the last completed GC. Cumulative allocations are not currently live objects. The recent-collection list contains up to 32 sampling observations; observation times are not exact GC event times. Compare trends, allocation rates, and pauses under the same workload.

Investigate process, hardware, and network health

In System Resources, distinguish process uptime from system uptime. Compare queued and completed thread-pool work and lock contention across samples under the same workload.

Process resources and thread-pool queues

In Network Interfaces, inspect the field interface and open Details for addresses, gateways, DNS, and errors. Enter the intended upstream host and TCP port, then run the connection check. TCP success proves that a connection can be established; verify protocol authentication and actual data separately. Missing ICMP replies alone do not prove TCP failure.

Network links and upstream connection checks

Observed disconnections count adjacent successful-to-failed checks for the same target, not all historical interface outages. Change addresses through System Settings.

If hardware, field-interface, or disk measurements are missing, check collector source status, then the operating system, device drivers, and runtime permissions.

Check packages and runtime environment

Open Frontend Packages or Backend Packages, search by name or version, and refresh the list to check releases and dependencies. File size, gzip reference size, and transferred bytes describe files and loading; use GC and Memory for memory usage. Frontend caching can reduce transferred bytes to zero; missing browser records display —.

Single-file publication, dynamic assemblies, or missing host dependency metadata can make some package fields unavailable. When troubleshooting, also record the actual .NET version, operating system, and architecture from Runtime Environment.

Run manual GC when needed

Manual GC requires its own permission. Blocking collection and compaction can pause execution; use a permitted maintenance window. Investigate workload and memory sources before using GC for sustained high usage.

  1. Open Manual GC and choose an optimized or forced mode and generation range.
  2. Select blocking collection, heap compaction, or LOH compaction as required.
  3. Click Run GC, review the confirmation, and submit.
  4. Compare managed objects, collection counts, call duration, and actual pauses. Wait for the displayed cooldown before another request.

Optimized collection can be skipped, and a nonblocking request can return before completion. Referenced objects remain, and the working set may not decrease immediately.

Troubleshooting

SymptomCheck
Refresh does not change the sample time30-second sample reuse, pause state, and request errors.
Working set is much larger than managed objectsMappings, shared pages, native allocations, and container cache, each in its own scope.
Container and host usage differControl-group limits, included processes, and host-wide measurements.
Manual GC or package data is missingThe corresponding viewing, package, and GC permissions.
Port check succeeds but collection or upload failsProtocol, certificates, credentials, and device or target logs.