def __init__(self, config: Configuration, distr_factory: DistributionFactory, historgram_builder: injector.ClassAssistedBuilder[Histogram]): super(Stats, self).__init__() self.__training_distribution = distr_factory(training=True) self.__histogram_builder = historgram_builder self.__target_satisfaction = config.get_config_int( 'target_satisfaction') self.__satisfaction_threshold = config.get_config_int( 'satisfaction_threshold') self.__config = config self.__storage = {}
def __init__(self, config: Configuration, distr_factory: DistributionFactory, conn: sqlite3.Connection, name: str): super(Histogram, self).__init__() self.__activity_distribution = distr_factory() self.__cache_size = config.get_config_int('cache_size', section='stats') self.__cursor = conn.cursor() self.__name = name self.__config = config self.__merge_by_pc = config.get_arg('merge_by_pc') self.__merge_by_hour = config.get_arg('merge_by_hour') self.__write_cache = []
def __init__(self, config: Configuration, model_builder: injector.ClassAssistedBuilder[Model], config_section: str): """All the data of this object is loaded from the config object.""" super(ActivityDistributionBase, self).__init__() self.__target_satisfaction = config.get_config_int( 'target_satisfaction') self.__satisfaction_threshold = config.get_config_int( 'satisfaction_threshold') self.__config = config self.__config_section = config_section do_merge = (config_section == 'training_distribution') self.__merge_by_pc = config.get_arg('merge_by_pc') and do_merge self.__merge_by_hour = config.get_arg('merge_by_hour') and do_merge self.__trace_file = config.get_config('file', section=config_section) self.__xmin = config.get_config_float('xmin', section=config_section) self.__xmax = config.get_config_float('xmax', section=config_section) self.__duration = config.get_config_float('duration', section=config_section) self.__model_builder = functools.partial(model_builder.build, xmax=self.__xmax, xmin=self.__xmin) self.__servers = [] self.__models = {} self.__optimal_timeout = None self.__optimal_timeouts = {} self.__parse_trace()
def __init__(self, config: Configuration, distr_builder: injector. ClassAssistedBuilder[ActivityDistributionBase], fleet_generator: FleetGenerator): super(DistributionFactory, self).__init__() self.__activity_distr = distr_builder.build( config_section='activity_distribution') self.__training_distr = distr_builder.build( config_section='training_distribution') self.__fleet_generator = fleet_generator self.__is_fleet_generator = config.get_arg('fleet_generator')
def __init__(self, config: Configuration, xmax: float, xmin: float, inactivity: typing.List = None, activity: typing.List = None, off_duration: typing.List = None, off_fraction: typing.List = None): super(Model, self).__init__() self.__inactivity = EmpiricalDistribution(inactivity) self.__activity = EmpiricalDistribution(activity) self.__off_duration = EmpiricalDistribution(off_duration) self.__off_fraction = off_fraction or [] self.__optimal_timeout = None self.__satisfaction_threshold = config.get_config_int( 'satisfaction_threshold') self.__target_satisfaction = config.get_config_int( 'target_satisfaction') self.__xmax = xmax self.__xmin = xmin self.__tested = None
def __init__(self, config: Configuration, distr_factory: DistributionFactory, user_builder: injector.ClassAssistedBuilder[User], plot: Plot, stats: Stats): super(Simulation, self).__init__() self.__activity_distribution = distr_factory() self.__training_distribution = distr_factory(training=True) self.__user_builder = user_builder self.__plot = plot self.__stats = stats self.__config = config self.target_satisfaction = config.get_config_int('target_satisfaction')
def __init__(self, config: Configuration): """Constructs the simulated fleet. Args: nservers: int, number of servers to simulate. in_hour: int, the time of starting working. out_hour: int, the time of leaving work. """ super(FleetGenerator, self).__init__() self.__target_satisfaction = config.get_config_int( 'target_satisfaction') self.__servers = generate_servers(config.users_num) self.__initialised = {cid: False for cid in self.__servers}
def __init__(self, config: Configuration, distr_factory: DistributionFactory, stats: Stats, cid: str): super(Computer, self).__init__() self.__activity_distribution = distr_factory() self.__training_distribution = distr_factory(training=True) self.__stats = stats self.__computer_id = cid self.__status = ComputerStatus.on self.__last_auto_shutdown = None self.__config = config self.__disable_auto_shutdown = config.get_arg('disable_auto_shutdown') self.__idle_timer = self.__config.env.process( self.__idle_timer_runner())
def provide_connection(self, config: Configuration) -> sqlite3.Connection: """Sets the database up for the module to work.""" db_name = config.get_config('database_name', 'stats') try: os.remove(db_name) except FileNotFoundError: pass conn = sqlite3.connect(db_name) conn.isolation_level = None conn.row_factory = sqlite3.Row conn.execute('PRAGMA journal_mode = OFF;') conn.execute('PRAGMA foreign_keys = OFF;') conn.execute('PRAGMA cache_size = %d;' % -int(MB(64) / KB(1))) conn.execute('PRAGMA synchronous = OFF;') conn.execute('PRAGMA temp_store = MEMORY;') return conn
def config_logging(config: Configuration) -> None: """Sets logging basic config""" logging.basicConfig( format='%(levelname)s: %(message)s', level=logging.DEBUG if config.get_arg('debug') else logging.INFO) logging.captureWarnings(True)