Switch to 4K page size for production readiness
Remove the 16K page override from the kernel patch, preserving upstream Talos's default 4K pages. RPi5 hardware works correctly with 4K pages — the RPi Foundation's 16K default is a TLB performance optimization (~5%), not a hardware requirement. Benefits: - Correct memory accounting (4x less overhead per page) - Full software compatibility (jemalloc, Longhorn, F2FS, etc.) - No OOM surprises on control-plane nodes - Aligned with upstream Talos kernel config Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8178ba195e
commit
b1eb322d7b
17
README.md
17
README.md
@ -59,8 +59,7 @@ talosctl upgrade --image docker.io/svrnty/talos-rpi5:v1.12.3-k6.12.47-2
|
|||||||
|
|
||||||
### What's included
|
### What's included
|
||||||
|
|
||||||
- RPi downstream kernel with CM5/RP1 support
|
- RPi downstream kernel with CM5/RP1 support (4K page size, aligned with upstream Talos)
|
||||||
- 16K page size (RPi Foundation default — see [known issues](#known-issues) for implications)
|
|
||||||
- Overclock: 2.6GHz (`arm_freq=2600`, `over_voltage_delta=50000`, `arm_boost=1`)
|
- Overclock: 2.6GHz (`arm_freq=2600`, `over_voltage_delta=50000`, `arm_boost=1`)
|
||||||
- Extensions: `iscsi-tools`, `util-linux-tools`
|
- Extensions: `iscsi-tools`, `util-linux-tools`
|
||||||
|
|
||||||
@ -78,18 +77,6 @@ The RPi5/CM5 EFI firmware does not support runtime EFI variable writes, which th
|
|||||||
|
|
||||||
*Upstream: <a href="https://github.com/talos-rpi5/talos-builder/issues/21" target="_blank">talos-builder#21</a>*
|
*Upstream: <a href="https://github.com/talos-rpi5/talos-builder/issues/21" target="_blank">talos-builder#21</a>*
|
||||||
|
|
||||||
### 16K memory pages
|
|
||||||
|
|
||||||
The RPi downstream kernel defaults to 16K page size instead of upstream Talos's 4K. This means:
|
|
||||||
|
|
||||||
- **Higher per-page memory overhead** — workloads that allocate many small buffers (e.g. Longhorn v2 data engine) consume significantly more RAM
|
|
||||||
- **Potential OOM on control-plane nodes** — systems running etcd + kube-apiserver + workloads may hit memory pressure, especially on 4GB/8GB boards
|
|
||||||
- **Incompatibility with some software** that assumes 4K pages
|
|
||||||
|
|
||||||
We plan to switch to 4K pages for production readiness (see [Roadmap](#roadmap)).
|
|
||||||
|
|
||||||
*Upstream: <a href="https://github.com/talos-rpi5/talos-builder/issues/3" target="_blank">talos-builder#3</a>, <a href="https://github.com/talos-rpi5/talos-builder/issues/11" target="_blank">talos-builder#11</a>*
|
|
||||||
|
|
||||||
### No serial console output after boot
|
### No serial console output after boot
|
||||||
|
|
||||||
Serial output goes silent after the EFI stub decompresses the kernel and exits boot services. This affects headless debugging on CM5 boards where serial is the primary console.
|
Serial output goes silent after the EFI stub decompresses the kernel and exits boot services. This affects headless debugging on CM5 boards where serial is the primary console.
|
||||||
@ -106,7 +93,7 @@ Talos ignores the `machine.install.disk` config field on SBC platforms. You **mu
|
|||||||
|
|
||||||
This project targets production-ready Talos clusters on RPi5/CM5 hardware. Key milestones:
|
This project targets production-ready Talos clusters on RPi5/CM5 hardware. Key milestones:
|
||||||
|
|
||||||
- [ ] **Switch to 4K page size** — Align with upstream Talos kernel config to reduce memory overhead and improve workload compatibility. Requires testing RPi peripheral drivers with 4K pages.
|
- [x] **Switch to 4K page size** — Aligned with upstream Talos kernel config. Reduces memory overhead and improves workload compatibility (Longhorn, jemalloc, F2FS, etc.).
|
||||||
- [ ] **Reliable in-place upgrades** — Investigate GRUB-based boot or alternative bootloader strategies to work around the `SetVariableRT` firmware limitation, enabling `talosctl upgrade` on RPi5/CM5.
|
- [ ] **Reliable in-place upgrades** — Investigate GRUB-based boot or alternative bootloader strategies to work around the `SetVariableRT` firmware limitation, enabling `talosctl upgrade` on RPi5/CM5.
|
||||||
- [ ] **Serial console fix** — Debug U-Boot/kernel handoff to restore serial output after EFI stub exit.
|
- [ ] **Serial console fix** — Debug U-Boot/kernel handoff to restore serial output after EFI stub exit.
|
||||||
- [ ] **NVMe boot support** — Produce images that target NVMe directly, or document a supported NVMe boot flow.
|
- [ ] **NVMe boot support** — Produce images that target NVMe directly, or document a supported NVMe boot flow.
|
||||||
|
|||||||
@ -58,17 +58,6 @@ index 65b3647..7ba70c0 100644
|
|||||||
# CONFIG_KEXEC is not set
|
# CONFIG_KEXEC is not set
|
||||||
CONFIG_KEXEC_FILE=y
|
CONFIG_KEXEC_FILE=y
|
||||||
CONFIG_KEXEC_SIG=y
|
CONFIG_KEXEC_SIG=y
|
||||||
@@ -450,8 +451,8 @@ CONFIG_ROCKCHIP_ERRATUM_3588001=y
|
|
||||||
CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
|
|
||||||
# end of ARM errata workarounds via the alternatives framework
|
|
||||||
|
|
||||||
-CONFIG_ARM64_4K_PAGES=y
|
|
||||||
-# CONFIG_ARM64_16K_PAGES is not set
|
|
||||||
+# CONFIG_ARM64_4K_PAGES is not set
|
|
||||||
+CONFIG_ARM64_16K_PAGES=y
|
|
||||||
# CONFIG_ARM64_64K_PAGES is not set
|
|
||||||
# CONFIG_ARM64_VA_BITS_39 is not set
|
|
||||||
CONFIG_ARM64_VA_BITS_48=y
|
|
||||||
@@ -660,7 +661,7 @@ CONFIG_CPU_FREQ_STAT=y
|
@@ -660,7 +661,7 @@ CONFIG_CPU_FREQ_STAT=y
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user