From 8d1bb8c411d8dc363b1bc8e707cdfe0fc148732e Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Wed, 23 Apr 2025 18:49:02 +0200 Subject: [PATCH 1/2] tune the ZFS pool for NVMe --- share/common.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/share/common.nix b/share/common.nix index af94371..81171ff 100644 --- a/share/common.nix +++ b/share/common.nix @@ -134,6 +134,18 @@ in options zfs zfs_vdev_def_queue_depth=128 ''; + # tune the ZFS pool for NVMe + system.activationScripts.zfsTuning = { + text = '' + # only one level of metadata caching + ${pkgs.zfs}/bin/zfs set primarycache=metadata zpool + ${pkgs.zfs}/bin/zfs set secondarycache=none zpool + + # use always direct IO to avoid ARC overhead + ${pkgs.zfs}/bin/zfs set direct=always zpool + ''; + }; + # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; From 3fd5bac916a4e8e4bcaa4ba7fb7e4b09b8d05a24 Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Wed, 23 Apr 2025 18:51:38 +0200 Subject: [PATCH 2/2] tune arc for meta data --- share/common.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/share/common.nix b/share/common.nix index 81171ff..515ba19 100644 --- a/share/common.nix +++ b/share/common.nix @@ -114,12 +114,9 @@ in # tweak ZFS boot.extraModprobeConfig = '' - options zfs zfetch_max_distance=268435456 - options zfs zfs_arc_meta_limit_percent=75 + options zfs zfs_arc_meta_limit_percent=100 options zfs zfs_arc_min=134217728 options zfs zfs_arc_max=4294967296 - options zfs zfs_compressed_arc_enabled=0 - options zfs zfs_abd_scatter_enabled=0 options zfs zfs_txg_timeout=30 options zfs zfs_vdev_scrub_min_active=1 options zfs zfs_vdev_scrub_max_active=1