Supported Platforms
gopsutil provides comprehensive system and process monitoring capabilities across multiple operating systems and architectures. The library is implemented entirely in Go without cgo dependencies.Primary Platform Support
Linux
Full support for i386, amd64, arm, and RISC-V architectures
Windows
Complete support for i386, amd64, arm, and arm64 architectures
macOS
Native support for both Intel (amd64) and Apple Silicon (arm64)
FreeBSD
Supports i386, amd64, and arm architectures
OpenBSD
Wide architecture support including i386, amd64, armv7, arm64, and riscv64
Solaris
Support for amd64 on SmartOS/Illumos
Partial Support
The following platforms have limited functionality:
- DragonFly BSD: CPU monitoring only
- Linux RISC-V: Host information only
- AIX: Various system metrics with some limitations
- Plan 9: Basic metrics available
Feature Compatibility Matrix
The following table shows which features are available on each major platform:System Metrics
| Feature | Linux | FreeBSD | OpenBSD | macOS | Windows | Solaris | Plan 9 | AIX |
|---|---|---|---|---|---|---|---|---|
| cpu_times | ✓ | ✓ | ✓ | ✓ | ✓ | ⚠️ | ✓ | |
| cpu_count | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| cpu_percent | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| cpu_times_percent | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| virtual_memory | ✓ | ✓ | ✓ | ✓ | ✓ | ⚠️ | ✓ | ✓ |
| swap_memory | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| disk_partitions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| disk_io_counters | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| disk_usage | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| net_io_counters | ✓ | ✓ | ✓ | ⚠️ | ✓ | ✓ | ||
| boot_time | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| users | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| pids | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| pid_exists | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| net_connections | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| net_protocols | ✓ | ✓ | ||||||
| net_if_addrs | ✓ | |||||||
| net_if_stats | ✓ | |||||||
| netfilter_conntrack | ✓ | |||||||
| sensors_temperature | ✓ | ✓ | ✓ | ✓ |
Legend:
- ✓ = Fully supported
- ⚠️ = Partially supported or with known issues
- Empty cell = Not supported
Process Information
| Feature | Linux | FreeBSD | OpenBSD | macOS | Windows |
|---|---|---|---|---|---|
| pid | ✓ | ✓ | ✓ | ✓ | ✓ |
| ppid | ✓ | ✓ | ✓ | ✓ | ✓ |
| name | ✓ | ✓ | ✓ | ✓ | ✓ |
| cmdline | ✓ | ✓ | ✓ | ✓ | ✓ |
| create_time | ✓ | ✓ | ✓ | ||
| status | ✓ | ✓ | ✓ | ✓ | |
| cwd | ✓ | ✓ | ✓ | ✓ | ✓ |
| exe | ✓ | ✓ | ✓ | ✓ | |
| uids | ✓ | ✓ | ✓ | ✓ | |
| gids | ✓ | ✓ | ✓ | ✓ | |
| terminal | ✓ | ✓ | ✓ | ||
| io_counters | ✓ | ✓ | ✓ | ✓ | |
| nice | ✓ | ✓ | ✓ | ✓ | ✓ |
| num_fds | ✓ | ✓ | ✓ | ||
| num_ctx_switches | ✓ | ||||
| num_threads | ✓ | ✓ | ✓ | ✓ | ✓ |
| cpu_times | ✓ | ✓ | |||
| memory_info | ✓ | ✓ | ✓ | ✓ | ✓ |
| memory_maps | ✓ | ||||
| open_files | ✓ | ✓ | |||
| send_signal | ✓ | ✓ | ✓ | ✓ | |
| suspend | ✓ | ✓ | ✓ | ✓ | ✓ |
| resume | ✓ | ✓ | ✓ | ✓ | ✓ |
| terminate | ✓ | ✓ | ✓ | ✓ | ✓ |
| kill | ✓ | ✓ | ✓ | ✓ | |
| username | ✓ | ✓ | ✓ | ✓ | ✓ |
| rlimit | ✓ | ||||
| threads | ✓ | ||||
| cpu_percent | ✓ | ✓ | ✓ | ✓ | |
| memory_percent | ✓ | ✓ | |||
| parent | ✓ | ✓ | ✓ | ✓ | |
| children | ✓ | ✓ | ✓ | ✓ | ✓ |
| connections | ✓ | ✓ | ✓ | ||
| page_faults | ✓ | ✓ |
Architecture Support
Linux
- i386: 32-bit Intel/AMD processors
- amd64: 64-bit Intel/AMD processors
- arm: ARM processors (including Raspberry Pi)
- RISC-V: Emerging RISC-V architecture (host information only)
Windows
- i386: 32-bit x86
- amd64: 64-bit x86-64
- arm: 32-bit ARM
- arm64: 64-bit ARM
macOS (Darwin)
- amd64: Intel-based Macs
- arm64: Apple Silicon (M1, M2, M3, etc.)
BSD Variants
- FreeBSD: i386, amd64, arm
- OpenBSD: i386, amd64, armv7, arm64, riscv64
- DragonFly BSD: CPU monitoring only
Other Platforms
- Solaris: amd64 (SmartOS/Illumos)
- AIX: Various architectures with partial support
- Plan 9: Basic support
Implementation Notes
Next Steps
Platform-Specific Details
Learn about the Ex structs for platform-specific information
Environment Configuration
Configure custom paths for system directories