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()
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()
self.out.write( str(self) + ": Time " + str(self.engine.now) + ": Sending " + str(data) + " to " + target["entity"] + "[" + str(targetId) + "]\n") self.reqService(10, target["service"], data, target["entity"], targetId) self.reqService(25, "generate", None, None, None) def sqrt(self, data, tx, txId): self.reqService(10, "result", math.sqrt(data), tx, txId) def result(self, data, tx, txId): self.out.write( str(self) + ": Time " + str(self.engine.now) + ": Got " + str(data) + " from " + tx + "[" + str(txId) + "]\n") for i in xrange(count): simianEngine.addEntity( "Alice", Alice, i) #Additional arguments, if given are passed to Alice.__init__() simianEngine.addEntity("Bob", Bob, i) for i in xrange(count): simianEngine.schedService(0, "generate", None, "Alice", i) simianEngine.schedService(50, "generate", None, "Bob", i) simianEngine.run() simianEngine.exit()
data = random.randrange(100) self.out.write(str(self) + ": Time " + str(self.engine.now) + ": Sending " + str(data) + " to " + target["entity"] + "[" + str(targetId) + "]\n") self.reqService(10, target["service"], data, target["entity"], targetId) self.reqService(25, "generate", None, None, None) def sqrt(self, data, tx, txId): self.reqService(10, "result", math.sqrt(data), tx, txId) def result(self, data, tx, txId): self.out.write(str(self) + ": Time " + str(self.engine.now) + ": Got " + str(data) + " from " + tx + "[" + str(txId) + "]\n") for i in xrange(count): simianEngine.addEntity("Alice", Alice, i) #Additional arguments, if given are passed to Alice.__init__() simianEngine.addEntity("Bob", Bob, i) for i in xrange(count): simianEngine.schedService(0, "generate", None, "Alice", i) simianEngine.schedService(50, "generate", None, "Bob", 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()
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()