Hardware Scaling
Observium's RAM and CPU requirements scale linearly primarily around the number of ports for networking-centric installs and the number of devices for server-centric installs.
When selecting hardware for web applications, it's crucial to consider single-threaded performance for both the web and database servers. Interactive elements of your application depend on this performance, as PHP page generation is single-threaded and SQL queries are executed sequentially.
Base Requirements
Before diving into specific hardware requirements, consult the documentation for your chosen Linux distribution, web server (e.g., Apache, Nginx), and database server (e.g., MySQL, MariaDB). These components have their own minimum requirements and will affect your hardware choices.
A small web application may only require a few tens of MB of RAM, but the web and database servers will also consume memory. We recommend at least 512MB of RAM for a small installation on a Raspberry Pi.
Processor (Web)
Web GUI page generation relies heavily on a single core. The higher the clock rate of the CPU, the faster the page generation, regardless of the number of cores. Multiple cores can speed up graph loading or other parallel tasks.
- For optimal performance, consider modern high-end Intel Core i7 or AMD Ryzen processors with high single-core performance.
- Intel Xeon processors with high core count tend to have relatively low single-core performance and can be a poor choice.
Processor (Poller)
Pollers run in parallel, so consider the average latency of the devices you're monitoring and the I/O throughput of your storage. To avoid wasting CPU cycles, aim to run around 2 pollers per core.
- Efficiently scaling pollers for a larger number of devices or ports can be achieved with mid-to-high-end AMD Ryzen, Intel Core i7, or Intel Xeon processors.
With the latest processors from AMD and Intel, scaling to high core counts on single sockets is now much easier. Opt for higher-end models within the Ryzen, Threadripper, Core i9, or Xeon Scalable series for the best performance.
Memory
Poller memory usage is generally negligible scaling lightly based on number of ports or other entities on each device. Web UI memory usage scales based on total install size, but will rarely be larger than a few tens of MBs per page load.
When polling on embedded systems such as Raspberry Pis or similar, poller threads are usually limited by available processor performance before memory capacity.
Storage Capacity
The storage capacity required depends on the amount of data generated by your installation.
- Each device or port may require a different amount of storage (e.g., 3 MB per port and 5-50 MB per host, depending on the OS and the number of ports).
- Estimate the total storage capacity required for your specific use case (e.g., 8 GB for 5,000 ports or 23 GB for 11,000 ports).
Storage I/O Throughput
Storage I/O throughput is the most serious bottleneck on many large deployments.
- A single 7200 RPM drive can handle the I/O requirements for about 5,000 ports. This capacity can be increased by using RAID-0 or faster (10k, 15k) drives.
- We highly recommend using SSD-based storage, as SSDs offer much higher I/O throughput and lower latency. Opt for high-quality SSDs with excellent endurance and IOPS ratings.