hugepages changes
This commit is contained in:
@@ -118,6 +118,9 @@
|
|||||||
|
|
||||||
hardware.intelgpu.driver = "xe";
|
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 = {
|
boot = {
|
||||||
# 6.12 LTS until 2026
|
# 6.12 LTS until 2026
|
||||||
kernelPackages = pkgs.linuxPackages_6_12_hardened;
|
kernelPackages = pkgs.linuxPackages_6_12_hardened;
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ rec {
|
|||||||
postgres = {
|
postgres = {
|
||||||
socket = "/run/postgresql";
|
socket = "/run/postgresql";
|
||||||
dataDir = services_dir + "/sql";
|
dataDir = services_dir + "/sql";
|
||||||
|
shared_buffers_m = 128; # PostgreSQL default; update if you change shared_buffers
|
||||||
};
|
};
|
||||||
|
|
||||||
immich = {
|
immich = {
|
||||||
@@ -150,4 +151,25 @@ rec {
|
|||||||
moviesDir = torrents_path + "/media/movies";
|
moviesDir = torrents_path + "/media/movies";
|
||||||
tvDir = torrents_path + "/media/tv";
|
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 = {
|
boot.kernel.sysctl = {
|
||||||
# Disable autogroup for better scheduling of game server threads
|
# Disable autogroup for better scheduling of game server threads
|
||||||
"kernel.sched_autogroup_enabled" = 0;
|
"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 = {
|
services.minecraft-servers = {
|
||||||
|
|||||||
Reference in New Issue
Block a user