Files
ubicloud/rhizome/postgres/bin/setup-hugepages
2025-07-01 16:30:19 +05:30

31 lines
984 B
Ruby
Executable File

#!/usr/bin/env ruby
# frozen_string_literal: true
require_relative "../../common/lib/util"
# Setup system hugepages
meminfo = File.read("/proc/meminfo")
hugepage_size_kib = Integer(meminfo[/^Hugepagesize:\s*(\d+)\s*kB/, 1], 10)
memory_total_kib = Integer(meminfo[/^MemTotal:\s*(\d+)\s*kB/, 1], 10)
target_hugepages_size_kib = memory_total_kib / 4
target_hugepages = target_hugepages_size_kib / hugepage_size_kib
r "echo 'vm.nr_hugepages = #{target_hugepages}' | sudo tee /etc/sysctl.d/10-hugepages.conf"
r "sync"
r "echo 3 | sudo tee /proc/sys/vm/drop_caches"
r "echo 1 | sudo tee /proc/sys/vm/compact_memory"
r "sudo sysctl --system"
meminfo = File.read("/proc/meminfo")
allocated_hugepages = Integer(meminfo[/^HugePages_Total:\s*(\d+)/, 1], 10)
if allocated_hugepages < target_hugepages
puts "Failed to allocate #{target_hugepages} hugepages. Only #{allocated_hugepages} were allocated."
exit 1
else
puts "Successfully allocated #{allocated_hugepages} hugepages."
end