def run(self, nodes, master, user, user_shell, volumes): log.info('Running SGE Plus') # update qconf complex list to make h_vmem and num_proc consumable log.info('Update complex configuration') master.ssh.put(opj(self.data_path, 'qconf_c'), '/tmp/qconf_c') execute(master, 'qconf -Mc /tmp/qconf_c') log.info('Update ms configuration') master.ssh.put(opj(self.data_path, 'msconf'), '/tmp/msconf') execute(master, 'qconf -Msconf /tmp/msconf') for node in nodes: self.on_add_node(node, nodes, master, user, user_shell, volumes)
def update_complex_list(node, num_proc=None): """ Sets a node's h_vmem and num_proc complex values :param node: The node to update """ log.info('Updating complex values for {0}'.format(node)) memtot = execute(node, 'free -g|grep Mem:|grep -oE "[0-9]+"|head -1')[0] num_proc = num_proc if num_proc else execute(node, 'nproc')[0] # scratch_mb= sp.check_output('df |grep scratch',shell=True).split()[3] scratch_mb = 0 if node.is_master(): num_proc = int(num_proc / 2) execute(node, "qconf -rattr exechost complex_values slots={num_proc},num_proc={num_proc},sce_mem={mem}g,sce_scratch={scratch_mb} {node}".format( mem=memtot, num_proc=num_proc, node=node.alias, scratch_mb=scratch_mb) ) log.info('Done updating complex values')