-
- def _huge_page_allocate(self):
- """Huge page allocate."""
- huge_mnt = self._qemu_opt.get('huge_mnt')
- mem_size = self._qemu_opt.get('mem_size')
- # Check size of free huge pages
- (_, output, _) = self._ssh.exec_command('grep Huge /proc/meminfo')
- regex = re.compile(r'HugePages_Free:\s+(\d+)')
- match = regex.search(output)
- huge_free = int(match.group(1))
- regex = re.compile(r'HugePages_Total:\s+(\d+)')
- match = regex.search(output)
- huge_total = int(match.group(1))
- regex = re.compile(r'Hugepagesize:\s+(\d+)')
- match = regex.search(output)
- huge_size = int(match.group(1))
-
- mem_needed = abs((huge_free * huge_size) - (mem_size * 1024))
-
- if mem_needed:
- huge_to_allocate = (mem_needed / huge_size) + huge_total
- # Increase limit of allowed max hugepage count
- cmd = 'echo "{0}" | sudo tee /proc/sys/vm/max_map_count'.format(
- huge_to_allocate*3)
- (ret_code, _, stderr) = self._ssh.exec_command_sudo(cmd)
- # Increase hugepage count
- cmd = 'echo "{0}" | sudo tee /proc/sys/vm/nr_hugepages'.format(
- huge_to_allocate)