Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
        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()
Пример #5
0
        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()
Пример #6
0
    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()
Пример #7
0
    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()