Skip to content

Commit 1c66f98

Browse files
docs: add hardware sizing section and remove stale MySQL variables
Refs #215 Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
1 parent c707c76 commit 1c66f98

1 file changed

Lines changed: 45 additions & 17 deletions

File tree

Requirements.md

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
# Requirements
22

3+
## Hardware Sizing
4+
5+
The table below covers common deployment sizes. These are starting points; actual
6+
requirements depend on polling interval, number of data sources per device, use of
7+
Spine vs cmd.php, and whether remote pollers are used.
8+
9+
| Deployment size | Devices | Data sources | CPU cores | RAM | Disk |
10+
|---|---|---|---|---|---|
11+
| Small | < 500 | < 50,000 | 2 | 4 GB | 50 GB SSD |
12+
| Medium | 500–2,000 | 50,000–500,000 | 4–8 | 16 GB | 200 GB SSD |
13+
| Large | 2,000–10,000 | 500,000–2,000,000 | 8–16 | 32–64 GB | 1 TB NVMe |
14+
| Very large | > 10,000 | > 2,000,000 | 16+ | 64+ GB | 2+ TB NVMe |
15+
16+
**Notes:**
17+
18+
- Use SSD or NVMe for the RRD file directory. RRDtool performs many small random
19+
writes; spinning disk causes polling backlogs on medium and larger installs.
20+
- The MySQL/MariaDB data directory benefits from SSD as well.
21+
`innodb_doublewrite` protects against torn page writes during a crash;
22+
disabling it reduces crash safety on any storage type, including SSD/NVMe.
23+
Setting `innodb_doublewrite = OFF` is an advanced optimization; only
24+
consider it when you accept the durability trade-off (e.g. strong
25+
backup/replication strategy and tolerance for potential data loss on an
26+
unclean shutdown).
27+
- Spine is CPU-bound. Each spine process spawns threads up to your configured
28+
maximum; allocate 1–2 spine processes per CPU core for best throughput.
29+
- Very large deployments (> 10,000 devices) require remote pollers deployed close to the devices
30+
they poll rather than scaling a single main poller vertically.
31+
32+
## Software Requirements
33+
334
Cacti requires that the following software is installed on your system.
435

536
> **Note**: As of Cacti 1.2.31, PHP 8.1 is required and PHP Composer is required.
@@ -12,7 +43,7 @@ Cacti requires that the following software is installed on your system.
1243

1344
- RRDtool 1.3 or greater, 1.5+ recommended
1445

15-
- PHP 5.4 or greater, 5.5+ recommended
46+
- PHP 8.1 or greater
1647
- Required modules:
1748
- ctype, date, filter, gettext, gd, gmp, intl
1849
- hash, json, ldap, mbstring, openssl, pcre
@@ -30,17 +61,17 @@ Cacti requires that the following software is installed on your system.
3061

3162
SELinux and ModSecurity can cause problem with ICMP ping, socket connections, ...
3263

33-
- MySQL 5.6 or MariaDB 5.5 or greater
64+
- MySQL 5.7 or MariaDB 10.2 or greater
3465
- Timezone support must be enabled
3566

3667
- The following are my.cnf recommendations:
3768

38-
- **version >= 5.6**
69+
- **version >= 5.7**
3970

40-
MySQL 5.6+ and MariaDB 10.0+ are great releases, and are very good
41-
versions to choose. Make sure you run the very latest release though
42-
which fixes a long standing low level networking issue that was causing
43-
spine many issues with reliability.
71+
MySQL 5.7+ and MariaDB 10.2+ are supported. MySQL 8.0 and MariaDB 10.6+
72+
are recommended for new installs. Run the latest maintenance release for
73+
your chosen branch; older patch releases have known networking issues that
74+
cause intermittent Spine failures.
4475

4576
- **innodb = ON**
4677

@@ -146,13 +177,12 @@ Cacti requires that the following software is installed on your system.
146177

147178
- **innodb_doublewrite = OFF**
148179

149-
With modern SSD type storage, this operation actually degrades the disk
150-
more rapidly and adds a 50% overhead on all write operations.
151-
152-
- **innodb_additional_mem_pool_size >= 80M**
153-
154-
This is where metadata is stored. If you had a lot of tables, it would
155-
be useful to increase this.
180+
Disables the InnoDB doublewrite buffer. This eliminates a 50% write
181+
overhead on SSD/NVMe storage, but removes protection against partial page
182+
writes on an unclean shutdown. Only set this on SSD or NVMe storage with
183+
battery-backed or capacitor-backed write cache, or when the database is
184+
on a volume with hardware-level write atomicity guarantees. Do not set on
185+
spinning disk or consumer SSDs without power-loss protection.
156186

157187
- **innodb_lock_wait_timeout >= 50**
158188

@@ -225,9 +255,7 @@ paste them into my.cnf
225255
innodb_buffer_pool_size = 250M
226256
innodb_io_capacity = 5000
227257
innodb_io_capacity_max = 10000
228-
innodb_file_format = Barracuda
229-
innodb_large_prefix = 1
230-
```
258+
```
231259

232260
---
233261
Copyright (c) 2004-2026 The Cacti Group

0 commit comments

Comments
 (0)