def main(): km = kmod.Kmod() modules_loaded = [str(m.name) for m in km.loaded()] modules_installed = SystemModules.get_installed_modules() modules_usable = [x for x in modules_installed if x not in modules_loaded] num_installed = len(modules_installed) num_loaded = len(modules_loaded) num_usable = len(modules_usable) print("%d Kernel modules installed, %d loaded" % (num_installed, num_loaded)) print("Performing random load/unload test on %d kernel modules" % num_usable) do_test(km, modules_usable) modules_left = [str(m.name) for m in km.loaded()] num_left = len(modules_left) delta = num_left - num_loaded if delta > 0: print("Could not unload %d modules" % delta) mods = [x for x in modules_left if x not in modules_loaded] for m in mods: print m elif delta < 0: print("Removed too much modules %d" % delta)
def _init_kmod(self): if not self._init_mod_dir(): raise RuntimeError("could not initialize modules dir") mod_dir_path = self.get_mod_dir_path() self.logger.debug( "Initializing kmod-based modalias lookup, using files from %s", (repr(mod_dir_path) if mod_dir_path else "<default>") ) # TODO: find out how config from /etc can interfere with # modalias lookup, and turn it off where appropriate # (flags get already set to 0) return kmod.Kmod(mod_dir=self._convert_to_bytes(mod_dir_path))
def display_modinfo(module_name): if _kmod is None: raise _kmod_import_error kmod = _kmod.Kmod() mod = kmod.module_from_name(name=module_name) items = [('filename', mod.path)] try: items.extend(mod.info.items()) except _kmod_error.KmodError as e: raise ModuleNotFound(module_name) longest_key = max(len(k) for k, v in items) print('modinfo for {}'.format(module_name)) for k, v in items: space = ' ' * (longest_key + 4 - len(k)) print(' {}:{}{}'.format(k, space, v))
def modprobe(module): ''' Load the specified kernel module if needed. @param module: The name of the kernel module to be loaded. @type module: str ''' if module in list_loaded_kernel_modules(): return try: import kmod kmod.Kmod().modprobe(module) except ImportError: process = subprocess.Popen(("modprobe", module), stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdoutdata, stderrdata) = process.communicate() if process.returncode != 0: raise RTSLibError(stderrdata)
def init_dpdk(): km = kmod.Kmod() km.modprobe('uio') km.modprobe('uio_pci_generic') km.modprobe('igb_uio') km.modprobe('vfio-pci')
def disable_uncore_frequency_scaling(): km = kmod.Kmod() km.modprobe('msr') # source: "Energy Efficient Servers, Blueprints for Data Center Optimization" on Google play writemsr(0x620, 0x1d1d)