def MessageGenProcess(this): this.sleep(1) entity = this.entity for evt_time in xrange(1, int(endTime / 2 - 1)): hello_rcvr = random.choice(xrange(num_entities)) reply_rcvr = random.choice(xrange(num_entities)) #print evt_time,hello_rcvr,reply_rcvr entity.reqService(evt_time, "recv_hello", HelloMessage(reply_rcvr), "Person", hello_rcvr) if (evt_time % 10 == 0): #raw_input() this.sleep(evt_time - this.entity.engine.now) class dummyNode(simianEngine.Entity): def __init__(self, baseInfo, *args): super(dummyNode, self).__init__(baseInfo) self.createProcess("MessageGen", MessageGenProcess) self.startProcess("MessageGen") for i in xrange(num_entities): simianEngine.addEntity("Person", Person, i, i) simianEngine.addEntity("dummyNode", dummyNode, 0) simianEngine.run() simianEngine.exit()
count = 4 lookahead = minDelay def exponential(mean): return -math.log(random.random())/mean class Node(simianEngine.Entity): def __init__(self, baseInfo, *args): super(Node, self).__init__(baseInfo) def generate(self, *args): targetId = random.randrange(count) offset = exponential(1) + lookahead self.out.write("Time " + str(self.engine.now) + ": Waking " + str(targetId) + " at " + str(offset) + " from now\n") self.reqService(offset, "generate", None, "Node", targetId) for i in xrange(count): simianEngine.addEntity("Node", Node, i) for i in xrange(count): simianEngine.schedService(0, "generate", None, "Node", i) simianEngine.run() simianEngine.exit()
def notifyShareCntChange(self, jobID, nodeID): for i in self.nodeToExecute.keys(): print "bb %d checking node %d" % (self.bbID, nodeID) procList = self.nodeToExecute[i] print procList if len(procList) > 0: for procName in procList: procStatus = self.statusProcess(procName) if procStatus == "suspended": self.wakeRetval[0] = -1 print "waking up %s" % procName self.wakeProcess(procName, *(self.wakeRetval)) print "bb %d job %d nodeID %d notify share cnt change done" % ( self.bbID, jobID, nodeID) def updateRemainIOTime(self, oldBw, remainSize, start): end = simEngine.now remain = abs(remainSize - ((end - start) * oldBw)) newBw = self.writeBw / self.shareCnt newIOTime = remain / newBw print "new iotime %f new remain %f" % (newIOTime, remain) return [newIOTime, remain] bbID = 0 args = [] args.append(bbID) simEngine.addEntity("bb0", BBNode, 0, *args) simEngine.run() simEngine.exit()