Skip to content
MikroTik RouterOS Docs

System Resources Monitoring

For the impatient: view system resources and CPU usage.

/system resource print

For per-process CPU breakdown:

/tool profile

What this does: System Resources provides real-time monitoring of CPU load, memory usage, disk space, uptime, and hardware information. The profiler tool identifies which processes consume CPU resources.

When to use this:

  • Monitoring router health and performance
  • Troubleshooting high CPU or memory usage
  • Verifying hardware specifications
  • Capacity planning before adding services
  • Diagnosing slow network performance

Prerequisites:

  • Access to RouterOS via Winbox, SSH, or WebFig
  • Read permissions (no special access required)

Display overall system information and resource usage.

/system resource print

Expected output:

uptime: 3d14h52m31s
version: 7.16 (stable)
build-time: 2024-09-20 13:29:57
factory-software: 7.10
free-memory: 186.5MiB
total-memory: 256.0MiB
cpu: ARM
cpu-count: 2
cpu-frequency: 800MHz
cpu-load: 3%
free-hdd-space: 12.4MiB
total-hdd-space: 16.0MiB
write-sect-since-reboot: 4521
write-sect-total: 124589
bad-blocks: 0%
architecture-name: arm
board-name: hAP ax lite
platform: MikroTik

View live CPU and memory statistics.

/system resource monitor once

Expected output:

cpu-used: 5%
cpu-used-per-cpu: 3%,7%
free-memory: 186.0MiB

For continuous monitoring (press Ctrl+C to stop):

/system resource monitor

Check individual CPU core loads.

/system resource cpu print

Expected output:

# CPU LOAD IRQ DISK
0 0 2% 1% 0%
1 1 4% 0% 0%

Use the profiler to find which processes consume CPU.

/tool profile

Expected output:

NAME CPU USAGE
idle all 97%
networking all 2%
management all 1%

For per-core breakdown:

/tool profile cpu=all

When CPU load is consistently high, identify the cause:

# Check overall CPU
/system resource print
# Identify process consuming CPU
/tool profile duration=10

Common high-CPU processes:

ProcessLikely Cause
networkingHigh packet rate, consider hardware offload
managementToo many Winbox/SSH sessions, scripts running
firewallComplex firewall rules, consider fasttrack
dnsDNS cache under heavy load
wirelessMany wireless clients, interference
encryptingVPN/IPsec traffic without hardware acceleration

Check for memory pressure:

/system resource print

Calculate usage percentage:

:local free [/system resource get free-memory]
:local total [/system resource get total-memory]
:put ("Memory used: " . (($total - $free) * 100 / $total) . "%")

Memory guidelines:

  • Below 20% free: Consider reducing services or upgrading hardware
  • Below 10% free: Risk of instability, immediate action needed
  • Out of memory: Router may reboot unexpectedly

Monitor storage for logs and files:

/system resource print

If disk is full:

# Check file usage
/file print
# Clear old logs if needed
/system logging action set memory memory-lines=100

List connected hardware devices:

/system resource hardware print

For USB devices:

/system resource usb print

Get specific values for scripts or SNMP:

# Get free memory
/system resource get free-memory
# Get CPU load
/system resource get cpu-load
# Get uptime
/system resource get uptime

Example alert script:

:local cpuLoad [/system resource get cpu-load]
:if ($cpuLoad > 80) do={
:log warning ("High CPU: " . $cpuLoad . "%")
}

On multi-core systems with high network traffic, distribute IRQ load:

# View current IRQ assignments
/system resource irq print
# Check per-core IRQ load
/system resource cpu print

Enable RPS for better packet distribution (v7+):

/system resource irq rps set [find] rps=yes
/system resource print

Expected: Shows uptime, version, memory, and CPU information.

/system resource get cpu-load

Expected: Below 80% under normal operation.

/system resource get free-memory

Expected: At least 20% of total memory free.

SymptomCauseSolution
CPU constantly at 100%Overloaded or attackUse /tool profile to identify process; enable fasttrack for routing
Memory slowly decreasingMemory leak or growing tablesCheck connection tracking, DNS cache, address lists; consider reboot
”Out of memory” rebootInsufficient RAM for workloadReduce services, clear logs, disable unused packages, upgrade hardware
High IRQ usageNetwork traffic on single coreEnable hardware offload; use RPS on v7+
Disk space fullLog files or packagesClear files with /file remove; reduce logging verbosity
management high CPUMany concurrent sessionsLimit Winbox sessions; check for runaway scripts
Profiler shows unclassifiedUnknown processUsually kernel tasks; monitor for patterns

Common Mistakes

  • Don’t ignore gradual memory decline - Memory that never returns may indicate a leak; plan periodic reboots if needed
  • Don’t confuse profile total with resource load - /tool profile percentages may not match /system resource exactly
  • Don’t overlook IRQ distribution - Single-core IRQ handling limits throughput on multi-core routers
  • Don’t forget disk writes wear flash - Excessive logging shortens NAND lifespan; use remote syslog for busy routers
ProcessDescription
idleFree CPU (higher is better)
networkingPacket processing
managementWinbox, SSH, API, web sessions
firewallPacket filtering and NAT
encryptingIPsec, VPN encryption
dnsDNS server/cache
routingRouting protocol calculations
wirelessWireless driver operations
bridgingBridge forwarding
unclassifiedKernel and uncategorized tasks
  • Profiler - identify CPU-intensive processes
  • Torch - real-time traffic analysis
  • Scheduler - automate resource monitoring
PropertyTypeDescription
uptimetimeTime since last boot
versionstringRouterOS version
cpu-loadpercentCurrent CPU usage
free-memorybytesAvailable RAM
total-memorybytesInstalled RAM
free-hdd-spacebytesAvailable storage
total-hdd-spacebytesTotal storage
cpu-countintegerNumber of CPU cores
cpu-frequencyMHzCPU clock speed
architecture-namestringCPU architecture (arm, x86, etc.)
board-namestringHardware model
bad-blockspercentNAND bad block percentage
CommandDescription
/system resource printDisplay all resource information
/system resource monitorReal-time CPU and memory monitoring
/system resource cpu printPer-core CPU statistics
/system resource irq printInterrupt assignments
/system resource hardware printConnected hardware devices
/system resource usb printUSB device information
/system resource get <property>Get specific value for scripting
/tool profilePer-process CPU profiler
/tool profile cpu=allPer-core process breakdown

System Resources monitoring is essential for router health and troubleshooting:

  1. View resources with /system resource print for CPU, memory, disk, and uptime
  2. Monitor real-time with /system resource monitor for live updates
  3. Identify CPU hogs with /tool profile to see per-process usage
  4. Check per-core with /system resource cpu print for load distribution

Key points:

  • CPU load below 80% is healthy; above indicates overload or attack
  • Keep at least 20% memory free to avoid instability
  • Use /tool profile duration=10 for accurate CPU breakdown (brief samples miss spikes)
  • High networking in profiler suggests enabling fasttrack or hardware offload
  • Multi-core systems benefit from RPS (Receive Packet Steering) in v7+
  • Excessive disk writes wear flash storage; use remote syslog for busy routers
  • Memory usage per-process isn’t shown; check connection tracking, DNS cache, and address lists
  • Gradual memory decline may indicate a leak; plan periodic maintenance reboots if needed