zh
Size: a a a
zh
n
n
we write 0 to /sys/kernel/mm/hugepages/hugepages-${SIZE}/nr_hugepages which should release them after the vm is shutdown
of course you could be unlucky and the memory fragmentation does not allow for a 1gb hugepage to be allocated again
n
sub hugepages_default_nr_hugepages {
my ($size) = @_;
my $cmdline = PVE::Tools::file_read_firstline("/proc/cmdline");
my $args = PVE::Tools::split_args($cmdline);
my $parsed_size = 2; # default is 2M
foreach my $arg (@$args) {
if ($arg eq "hugepagesz=2M") {
$parsed_size = 2;
} elsif ($arg eq "hugepagesz=1G") {
$parsed_size = 1024;
} elsif ($arg =~ m/^hugepages=(\d+)?$/) {
if ($parsed_size == $size) {
return $1;
}
}
}
return 0;
}
n
sub hugepages_pre_deallocate {
my ($hugepages_topology) = @_;
foreach my $size (sort keys %$hugepages_topology) {
my $hugepages_size = $size * 1024;
my $path = "/sys/kernel/mm/hugepages/hugepages-${hugepages_size}kB/";
my $hugepages_nr = hugepages_default_nr_hugepages($size);
PVE::ProcFSTools::write_proc_entry($path."nr_hugepages", $hugepages_nr);
}
}
n
n
n
n
TF
G
TF
АЖ
DY
TF
TF
ИО
АЖ
DY
UD