#!/usr/bin/env python3 # Set number of vCPUs to use to the environment variable QEMUSH_NPROC or # half of total vCPUs installed if it fails try: from os import environ nproc = environ['QEMUSH_NPROC'] except KeyError: from multiprocessing import cpu_count nproc = str(cpu_count() // 2) # Set amount of RAM to use to the environment variable QEMUSH_RAM or half # of total RAM installed if it fails try: ram = environ['QEMUSH_RAM'] except KeyError: from psutil import virtual_memory ram = str(virtual_memory().available // 2 // (1024 ** 2)) # Set the command to initialize; all required parameters to make a sane KVM # are included and optional arguments are appended from argv from sys import argv command = [ 'qemu-system-x86_64', '-enable-kvm', '-M', 'q35', '-cpu', 'host', '-smp', nproc, '-m', ram, ] + argv[1:] # Print the final command and replace the main process with it print(command) from os import execvp execvp(command[0], command)