hugepages changes
This commit is contained in:
@@ -118,6 +118,9 @@
|
||||
|
||||
hardware.intelgpu.driver = "xe";
|
||||
|
||||
# Per-service 2MB hugepage budget calculated in service-configs.nix.
|
||||
boot.kernel.sysctl."vm.nr_hugepages" = service_configs.hugepages_2m.total_pages;
|
||||
|
||||
boot = {
|
||||
# 6.12 LTS until 2026
|
||||
kernelPackages = pkgs.linuxPackages_6_12_hardened;
|
||||
|
||||
@@ -60,6 +60,7 @@ rec {
|
||||
postgres = {
|
||||
socket = "/run/postgresql";
|
||||
dataDir = services_dir + "/sql";
|
||||
shared_buffers_m = 128; # PostgreSQL default; update if you change shared_buffers
|
||||
};
|
||||
|
||||
immich = {
|
||||
@@ -150,4 +151,25 @@ rec {
|
||||
moviesDir = torrents_path + "/media/movies";
|
||||
tvDir = torrents_path + "/media/tv";
|
||||
};
|
||||
|
||||
# Per-service 2MB hugepage budget.
|
||||
# Each value is the service's hugepage consumption in MB, derived from
|
||||
# its actual memory configuration. The kernel sysctl vm.nr_hugepages
|
||||
# is set to total_pages so every service gets what it needs.
|
||||
hugepages_2m = rec {
|
||||
page_size_m = 2;
|
||||
|
||||
# RandomX dataset (2048MB) + cache (256MB) = 2304MB per instance.
|
||||
# Both monerod and p2pool allocate their own full copy via MAP_HUGETLB.
|
||||
randomx_instance_m = 2048 + 256;
|
||||
|
||||
services = {
|
||||
minecraft_m = minecraft.memory.heap_size_m; # JVM heap via -XX:+UseLargePages
|
||||
monerod_m = randomx_instance_m; # block verification dataset
|
||||
p2pool_m = randomx_instance_m; # mining dataset
|
||||
postgres_m = postgres.shared_buffers_m; # huge_pages = try (default)
|
||||
};
|
||||
|
||||
total_pages = builtins.foldl' (a: b: a + b) 0 (builtins.attrValues services) / page_size_m;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -27,14 +27,6 @@
|
||||
boot.kernel.sysctl = {
|
||||
# Disable autogroup for better scheduling of game server threads
|
||||
"kernel.sched_autogroup_enabled" = 0;
|
||||
|
||||
# We want to determine the number of hugepages based on how many minecraft needs.
|
||||
# This can be determined by dividing the heap size by the size of a large page.
|
||||
# Doing this gives us how many large pages are needed.
|
||||
# Then we add 300 to give some headroom.
|
||||
"vm.nr_hugepages" =
|
||||
(service_configs.minecraft.memory.heap_size_m / service_configs.minecraft.memory.large_page_size_m)
|
||||
+ 300;
|
||||
};
|
||||
|
||||
services.minecraft-servers = {
|
||||
|
||||
Reference in New Issue
Block a user