示例#1
0
 def __init__(self):
     Process.__init__(self)
     self._signals = {
         'kill' : SimEvent('kill'),
         'finish' : SimEvent('finish'),
     }
     self._finished = False
示例#2
0
    def __init__(self, name, sim, task):
        Process.__init__(self, name=name, sim=sim)

        # number of the action
        self.q = 0

        # corresonding pycpa task
        self.task = task

        # the signal used to wake up the activation event
        self.signal_event = SimEvent(sim=sim)

        # workload left to consume
        self.workload = task.wcet

        # active segments of the execution of the form: [(0,1), (3,9)]
        self.exec_windows = list()

        # last recent start of a execution segment
        self.recent_window_start = None

        # actual response time
        self.response_time = 0

        # start time
        self.start_time = 0

        # finishing time
        self.finish_time = 0
示例#3
0
 def __init__(self, cnode, index, configs):
     StorageNode.__init__(self, cnode, index, configs)
     #txns that are not yet granted locks, in FCFS order
     self.lockingQueue = []
     self.waitingSet = set([])
     self.nextEvent = SimEvent()
     self.ts = 0
示例#4
0
 def block(self, thread, state):
     """Block a thread for this object."""
     assert thread not in self.blockedThreads, \
             '%s, %s, (%s)' %(self.ID, thread.ID, ','.join(
                 [str(t.ID) for t in self.blockedThreads]))
     event = SimEvent()
     self.blockQueue.append(thread)
     self.blockedThreads[thread] = (state, event)
     return event
示例#5
0
 def run(self, aseed):
     """ PEM """
     seed(aseed)
     self.dooropen = SimEvent("Door Open", sim=self)
     self.counter = Resource(1, name="Clerk", sim=self)
     doorman = Doorman(sim=self)
     self.activate(doorman, doorman.openthedoor())
     source = Source(sim=self)
     self.activate(source, source.generate(number=5, rate=0.1), at=0.0)
     self.simulate(until=maxTime)
示例#6
0
 def getWaitMsgEvents(self, tags):
     events = []
     if not (isinstance(tags, list) or isinstance(tags, tuple)):
         tags  = (tags, )
     for tag in tags:
         if tag not in self.rtiNotifiers:
             event = SimEvent()
             self.rtiNotifiers[tag] = event
         event = self.rtiNotifiers[tag]
         events.append(event)
     return events
示例#7
0
    def __init__(self, sim, name="SPP", tasks=list()):

        assert sim != None
        Process.__init__(self, name=name, sim=sim)
        self.tasks = tasks
        self.pending = list()

        # list of simtasks
        self.simtasks = list()

        self.arrival_event = SimEvent('Arrival Event', sim=sim)
示例#8
0
 def __init__(self, cnode, ID, configs):
     IDable.__init__(self, '%s/sn%s' % (cnode.ID.split('/')[0], ID))
     Thread.__init__(self)
     RTI.__init__(self, self.ID)
     self.logger = logging.getLogger(self.__class__.__name__)
     self.system = cnode.system
     self.configs = configs
     self.cnode = cnode
     self.maxNumTxns = configs.get('max.num.txns.per.storage.node', 1024)
     self.pool = Resource(self.maxNumTxns, name='pool', unitName='thread')
     self.groups = {}  #{gid : group}
     self.newTxns = []
     self.txnsRunning = set([])
     self.shouldClose = False
     self.monitor = Profiler.getMonitor(self.ID)
     self.M_POOL_WAIT_PREFIX = '%s.pool.wait' % self.ID
     self.M_TXN_RUN_PREFIX = '%s.txn.run' % self.ID
     self.M_NUM_TXNS_RUN_KEY = '%s.num.txns' % self.ID
     self.runningThreads = set([])
     self.closeEvent = SimEvent()
     self.newTxnEvent = SimEvent()
示例#9
0
 def __init__(self, system, ID, configs):
     IDable.__init__(self, 'zone%s/cn' % ID)
     Thread.__init__(self)
     RTI.__init__(self, self.ID)
     self.logger = logging.getLogger(self.__class__.__name__)
     self.system = system
     self.snodes = []
     self.configs = configs
     self.groupLocations = {}
     self.txnsRunning = set([])
     self.shouldClose = False
     self.closeEvent = SimEvent()
     #paxos entities
     self.paxosPRunner = None
     self.paxosAcceptor = None
     self.paxosLearner = None
示例#10
0
    def __init__(self, sim, name="SPNP", tasks=list()):

        assert sim != None
        Process.__init__(self, name=name, sim=sim)

        # list of pending activations
        self.pending = list()

        # list of blocker activations (usually one lower priority activation)
        self.blockers = list()

        # list of simtasks
        self.simtasks = list()

        # signals a new activation
        self.arrival_event = SimEvent('Arrival Event', sim=sim)
示例#11
0
 def __init__(self, interval, name=None,
              until=infinite, drift=('fixed', 0)):
     Process.__init__(self)
     self.interval = interval
     if name is not None:
         eventname = name
     else:
         eventname = "a_SimEvent"
     self.event = SimEvent(eventname)
     self.until = until
     try:
         key, mean, cfg = drift
     except ValueError:
         key, mean = drift
         cfg = {}
     lb = cfg.get('lb', 0); ub = cfg.get('ub', interval)
     if lb < 0: raise ValueError('drift lb = %s >= 0' %lb)
     if ub > interval:
         raise ValueError('drift ub = %s < %s = interval' %interval)
     cfg['lb'] = lb; cfg['ub'] = ub
     self.rgen = RandInterval.get(key, mean, cfg)
示例#12
0
 def __init__(self, name):
     Process.__init__(self, name=name)
     self.doneSignal = SimEvent()