print("CPU target load out of the range [0,1]") sys.exit(1) if options['duration'] < 0: print("Invalid duration") sys.exit(1) if options['plot'] != 0 and options['plot'] != 1: print("plot can be enabled 1 or disabled 0") sys.exit(1) if options['cpu_core'] >= multiprocessing.cpu_count(): print("You have only %d cores on your machine" % (multiprocessing.cpu_count())) sys.exit(1) monitor = MonitorThread(options['cpu_core'], 0.1) monitor.start() control = ControllerThread(0.1) control.start() control.setCpuTarget(options['cpuLoad']) actuator = closedLoopActuator(control, monitor, options['duration'], options['cpu_core'], options['cpuLoad'], options['plot']) actuator.run() actuator.close() monitor.running = 0 control.running = 0 monitor.join() control.join()
dynamics_plot_online = 0 if testing == 1: cpuSequence = [0.8, 0.1, 0.30, 0.70, 0.40, 0.10, 0.20, 0.60, 0.20, 0.70] #cpuSequence = [0.8, 0.1] stepPeriod = 4 control = ControllerThread(0.1) monitor = MonitorThread(0, 0.1) actuator = closedLoopActuator(control, monitor, len(cpuSequence) * stepPeriod, 0, 1, dynamics_plot_online) monitor.start() control.start() actuator.run_sequence(cpuSequence) actuator.close() monitor.running = 0 control.running = 0 dynamics = monitor.getDynamics() monitor.join() control.join() stepPeriod = 4 with open('pid_data', 'w') as outfile: json.dump(dynamics, outfile) else: with open('pid_data', 'r') as outfile: dynamics = json.load(outfile) plt.figure()