Skip to content

Commit 046c4b0

Browse files
committed
Automatic documentation update
1 parent af62c5c commit 046c4b0

3 files changed

Lines changed: 125 additions & 0 deletions

File tree

docs/User-Guide_Armbian-Config/System.md

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,28 @@ ZFS is an advanced, high-performance file system and volume manager designed for
360360

361361
When enabling ZFS support, Armbian checks if the running kernel can support ZFS, installs matching kernel headers if necessary, and builds the ZFS DKMS (Dynamic Kernel Module Support) module automatically.
362362

363+
**Performance Tuning:**
364+
365+
Once ZFS is installed, the **Tune ZFS** option becomes available, allowing you to fine-tune critical performance parameters:
366+
367+
- **ARC Cache (Adaptive Replacement Cache)**: ZFS's intelligent caching system that stores frequently accessed data in RAM. The ARC can consume 50% or more of system memory by default, which may be excessive for memory-constrained devices.
368+
369+
- **Dirty Data Limits**: Controls how much modified data can accumulate before being written to disk. Higher values improve performance but increase risk of data loss on power failure.
370+
371+
- **TXG Timeout**: Transaction Group timeout determines how often ZFS writes changes to disk. Lower values increase data safety at the cost of performance.
372+
373+
- **Compression**: Transparent compression that can actually improve performance by reducing I/O. LZ4 is recommended for most workloads.
374+
375+
**Recommended Settings for ARM Devices:**
376+
377+
- **ARC Max**: 1/2 to 2/3 of RAM (on 1-2GB systems, consider 256-512MB)
378+
- **ARC Min**: 1/8 of RAM
379+
- **Dirty Data Max**: 4% of RAM or ARC size (whichever is smaller)
380+
- **TXG Timeout**: 5 seconds (default)
381+
- **Compression**: lz4 (recommended)
382+
383+
The tuning interface provides safe defaults based on your system's memory size and allows you to adjust parameters with immediate feedback. Changes are saved to `/etc/modprobe.d/zfs.conf` and persist across reboots.
384+
363385
<!--- header STOP from tools/include/markdown/ZFS001-header.md --->
364386

365387
__Edit:__ [footer](https://github.com/armbian/configng/edit/main/tools/include/markdown/ZFS001-footer.md) [header](https://github.com/armbian/configng/edit/main/tools/include/markdown/ZFS001-header.md)
@@ -374,6 +396,100 @@ armbian-config --cmd ZFS001
374396

375397

376398
<!--- footer START from tools/include/markdown/ZFS001-footer.md --->
399+
## Performance Tuning
400+
401+
The ZFS module includes a comprehensive tuning interface accessible via **System → Storage → Tune ZFS** (or `armbian-config`**System****Storage****Tune ZFS**).
402+
403+
=== "ARC Cache Tuning"
404+
405+
The **ARC (Adaptive Replacement Cache)** is ZFS's intelligent caching system.
406+
407+
**Recommended Settings:**
408+
- **ARC Min:** 1/8 of RAM (minimum cache size)
409+
- **ARC Max:** 1/2 of RAM (maximum cache size)
410+
411+
For memory-constrained ARM devices (1-2 GB RAM):
412+
- Consider limiting ARC to 256-512 MB to leave memory for applications
413+
- ARC Max = 0 means "use all available RAM" (may not be ideal for small systems)
414+
415+
**Impact:**
416+
- Higher ARC = better read performance for frequently accessed data
417+
- Too high ARC can cause system swapping and degraded performance
418+
419+
=== "Dirty Data Tuning"
420+
421+
**Dirty data** is modified data waiting to be written to disk.
422+
423+
**Recommended Setting:**
424+
- **4% of RAM** (or 4% of ARC size, whichever is smaller)
425+
426+
**Impact:**
427+
- Higher values = better write performance, more data loss risk on power failure
428+
- Lower values = safer data, more frequent disk writes
429+
430+
=== "TXG Timeout Tuning"
431+
432+
**TXG (Transaction Group)** controls how often ZFS writes changes to disk.
433+
434+
**Recommended Setting:**
435+
- **5 seconds** (default)
436+
437+
**Range:** 1-30 seconds
438+
439+
**Impact:**
440+
- Lower (1-3s): Better data safety, more disk writes, lower performance
441+
- Higher (10-30s): Better performance, more data loss risk on power failure
442+
443+
=== "Compression"
444+
445+
ZFS compression is transparent and can actually **improve performance** by reducing I/O.
446+
447+
**Options:**
448+
- **lz4**: Fast, good compression (recommended for most)
449+
- **zstd**: Better compression ratio, slightly slower CPU usage
450+
- **gzip**: Maximum compression, slowest
451+
- **off**: Disable compression
452+
453+
**Note:** Compression setting only affects **new** datasets. Existing datasets keep their compression setting.
454+
455+
=== "Applying Configuration"
456+
457+
Configuration is saved to `/etc/modprobe.d/zfs.conf` and requires reloading the ZFS module:
458+
459+
```bash
460+
# Option 1: Reboot (simplest)
461+
reboot
462+
463+
# Option 2: Reload module (requires unmounting all ZFS filesystems)
464+
zfs umount -a
465+
rmmod zfs
466+
modprobe zfs
467+
```
468+
469+
=== "Viewing Current Settings"
470+
471+
Current settings can be viewed in the tuning interface or directly:
472+
473+
```bash
474+
# View module parameters
475+
cat /sys/module/zfs/parameters/zfs_arc_max
476+
cat /sys/module/zfs/parameters/zfs_arc_min
477+
cat /sys/module/zfs/parameters/zfs_dirty_data_max
478+
cat /sys/module/zfs/parameters/zfs_txg_timeout
479+
480+
# View configuration file
481+
cat /etc/modprobe.d/zfs.conf
482+
```
483+
484+
=== "Reset to Defaults"
485+
486+
The tuning interface includes a "Reset to Defaults" option that:
487+
- Removes custom configuration from `/etc/modprobe.d/zfs.conf`
488+
- Resets all parameters to ZFS defaults
489+
- Requires module reload to take effect
490+
491+
---
492+
377493
##### Key Features
378494

379495
###### Data Integrity
@@ -392,6 +508,7 @@ armbian-config --cmd ZFS001
392508
- **Native Encryption:** Supports dataset-level encryption for secure data storage.
393509
- **RAID-Z:** A superior RAID alternative that prevents write-hole issues.
394510

511+
395512
<!--- footer STOP from tools/include/markdown/ZFS001-footer.md --->
396513

397514

@@ -400,6 +517,12 @@ armbian-config --cmd ZFS002
400517
~~~
401518

402519

520+
~~~ bash title="Tune ZFS:"
521+
armbian-config --cmd ZFS003
522+
~~~
523+
524+
525+
403526

404527
## SSH daemon
405528

docs/User-Guide_Armbian-Software/Monitoring.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ __Status:__ Stable
265265
__Architecture:__ <span style="background-color:#e0e0e0; color:#333333; padding:3px 6px; border-radius:4px; font-size:90%;">x86-64</span> <span style="background-color:#d3f9d8; color:#1b5e20; padding:3px 6px; border-radius:4px; font-size:90%;">arm64</span>
266266
__Maintainer:__ @igorpecovnik
267267
__Documentation:__ [Link](https://github.com/louislam/uptime-kuma/wiki)
268+
__Installation:__ <span style="background-color:#ffffff; color:#039BE5; padding:3px 6px; border-radius:4px; font-size:90%;">🐳 Docker</span>
268269

269270
~~~ custombash
270271
armbian-config --cmd UPK001

docs/User-Guide_Armbian-Software/Software.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3120,6 +3120,7 @@ __Status:__ Stable
31203120
__Architecture:__ <span style="background-color:#e0e0e0; color:#333333; padding:3px 6px; border-radius:4px; font-size:90%;">x86-64</span> <span style="background-color:#d3f9d8; color:#1b5e20; padding:3px 6px; border-radius:4px; font-size:90%;">arm64</span>
31213121
__Maintainer:__ @igorpecovnik
31223122
__Documentation:__ [Link](https://github.com/louislam/uptime-kuma/wiki)
3123+
__Installation:__ <span style="background-color:#ffffff; color:#039BE5; padding:3px 6px; border-radius:4px; font-size:90%;">🐳 Docker</span>
31233124

31243125
~~~ custombash
31253126
armbian-config --cmd UPK001

0 commit comments

Comments
 (0)