Ejemplo n.º 1
0
Archivo: bench.py Proyecto: 12019/smews
def alarm_handler(signo,frame):
	global trafficBytes1,trafficPackets1,startTime
	toWait = benchTools.toWait
	statsMap = benchTools.statsMap
	nClients = benchTools.nClients
	firstReceiveTime = benchTools.firstReceiveTime
	lattestUnconsistentTime = benchTools.lattestUnconsistentTime
	nPublish = benchTools.nPublish
	if toWait > 0:
		print 'Waiting %d...' %toWait
	elif firstReceiveTime == None:
		print 'Waiting for a first synchronized publication'
	else:
		endTime = datetime.now()
		deltaTimeSec = benchTools.timeDeltaToMillis(endTime - startTime) / 1000.
		os.system('cat /proc/net/dev | grep sl0 > .net_stats')
		devStats = filter(lambda c: c != '',open('.net_stats', 'r').readline().split(' '))
		os.remove('.net_stats')
		trafficBytes2 = int(devStats[1]) + int(devStats[9])
		trafficPackets2 = int(devStats[2]) + int(devStats[10])
		trafficBytes = (trafficBytes2 - trafficBytes1) / float(deltaTimeSec)
		trafficPackets = (trafficPackets2 - trafficPackets1) / float(deltaTimeSec)

		cptClients = 0
		print '----------------------------------'
		print 'id, port, mct, mpt, rpm, rpmu'
		keys = statsMap.keys()
		keys.sort()
		ptSum = 0
		ctSum = 0
		rpmSum = 0
		rpmuSum = 0
		rpmPercentSum = 0
		rpmuPercentSum = 0
		for key in keys:
			ctSum += statsMap[key]['tct']
			ptSum += statsMap[key]['tpt']
			rpmSum += statsMap[key]['rpm']
			rpmuSum += statsMap[key]['rpmu']
			mct = ratio(statsMap[key]['tct'], nPublish)
			mpt = ratio(statsMap[key]['tpt'], statsMap[key]['rpmu'])
			rpmPercent = 100*ratio(statsMap[key]['rpm'], nPublish)
			rpmuPercent = 100*ratio(statsMap[key]['rpmu'], nPublish)
			try:
				port = statsMap[key]['sock'].getsockname()[1]
			except:
				port = 0
			print '[%d, %d], %d, %d, %d, %d, %d%%, %d%%' %(key,port,mct,mpt,statsMap[key]['rpm'],statsMap[key]['rpmu'],rpmPercent,rpmuPercent)
		print 'id, mct, mpt, rpm, rpmu, nPublish (%d)' %(benchTools.timeDeltaToMillis(datetime.now() - firstReceiveTime) / 1000.)
		print '--- mct, mpt, rpm, rpmu, nPublish, rpm%, rpmu%, ntb, ntp, ct%'
		print '[AVG] %d, %d, %d, %d, %d, %d%%, %d%%, %.1f, %.1f, %d%%' %(ratio(ctSum,nPublish * nClients), ratio(ptSum,rpmuSum),ratio(rpmSum,nClients),ratio(rpmuSum,nClients),nPublish,100*ratio(rpmSum,nPublish * nClients),100*ratio(rpmuSum,nPublish * nClients),trafficBytes,trafficPackets,100*ratio(ctSum,nClients*benchTools.timeDeltaToMillis(lattestUnconsistentTime-firstReceiveTime)))

	signal.alarm(2)
Ejemplo n.º 2
0
def main():
	if len(sys.argv) != 4:
		print 'Usage: ' + sys.argv[0] + ' nClients pollInterval pubInterval'
		exit(1)

	dstIP = 'www.wsn430.pan'
	nClients = int(sys.argv[1])
	pollInterval = float(sys.argv[2])
	pubInterval = float(sys.argv[3])

	print "Configuration %d %d %d" %(nClients, pollInterval, pubInterval)
	print "Timestamp %s" %datetime.now()

	if pollInterval == 0:
		if pubInterval == 0:
			dstURL = '/time/cometRand'
		else:
			dstURL = '/time/comet%ds' %pubInterval
	elif pollInterval == -1:
		if pubInterval == 0:
			dstURL = '/time/lpRand'
		else:
			dstURL = '/time/lp%ds' %pubInterval
	else:
		if pubInterval == 0:
			dstURL = '/time/timeRand'
		else:
			dstURL = '/time/time'

	benchTools.start(dstIP,dstURL,nClients,pollInterval,pubInterval)

	if pubInterval == 0:
		timeout = int(200)
	else:
		timeout = int(50 + max(3*max(pubInterval,pollInterval),nClients/2))
	print 'Timeout: %d' %timeout
	maxInitTimer = datetime.now() + timedelta(seconds = timeout)
	while benchTools.toWait > 0 or benchTools.firstReceiveTime == None:
		if datetime.now() > maxInitTimer:
			print 'init error'
			sys.exit(1)
		else:
			time.sleep(1)

	if pubInterval == 0:
		timeToSleep = 500
	else:
		elapsed = benchTools.timeDeltaToMillis(datetime.now() - benchTools.firstReceiveTime) / 1000.
		basicWait = max(150,5 * pubInterval)
		timeToSleep = basicWait + (pubInterval - elapsed % pubInterval - 2)

	os.system('cat /proc/net/dev | grep sl0 > .net_stats')
	devStats = filter(lambda c: c != '',open('.net_stats', 'r').readline().split(' '))
	trafficBytes1 = int(devStats[1]) + int(devStats[9])
	trafficPackets1 = int(devStats[2]) + int(devStats[10])

	startTime = datetime.now()

	print 'Sleep %d' %timeToSleep
	time.sleep(timeToSleep)

	endTime = datetime.now()
	deltaTimeSec = benchTools.timeDeltaToMillis(endTime - startTime) / 1000.

	os.system('cat /proc/net/dev | grep sl0 > .net_stats')
	devStats = filter(lambda c: c != '',open('.net_stats', 'r').readline().split(' '))
	os.remove('.net_stats')
	trafficBytes2 = int(devStats[1]) + int(devStats[9])
	trafficPackets2 = int(devStats[2]) + int(devStats[10])

	printResults((trafficBytes2 - trafficBytes1) / float(deltaTimeSec),(trafficPackets2 - trafficPackets1) / float(deltaTimeSec))
Ejemplo n.º 3
0
def printResults(trafficBytes,trafficPackets):
	toWait = benchTools.toWait
	statsMap = benchTools.statsMap
	nClients = benchTools.nClients
	firstReceiveTime = benchTools.firstReceiveTime
	lattestUnconsistentTime = benchTools.lattestUnconsistentTime
	nPublish = benchTools.nPublish
	cptClients = 0
	keys = statsMap.keys()
	keys.sort()
	ptSum = 0
	ctSum = 0
	rpmSum = 0
	rpmuSum = 0
	rpmPercentSum = 0
	rpmuPercentSum = 0
	for key in keys:
		ctSum += statsMap[key]['tct']
		ptSum += statsMap[key]['tpt']
		rpmSum += statsMap[key]['rpm']
		rpmuSum += statsMap[key]['rpmu']
	if int(100*ratio(rpmuSum,nPublish * nClients)) == 0:
		print 'error: rupm == 0'
	else:
		print 'Results: %d %d %d %d %.1f %.1f %.1f' %(ratio(ctSum,nPublish * nClients), ratio(ptSum,rpmuSum),100*ratio(rpmSum,nPublish * nClients),100*ratio(rpmuSum,nPublish * nClients),trafficBytes,trafficPackets,100*ratio(ctSum,nClients*benchTools.timeDeltaToMillis(lattestUnconsistentTime-firstReceiveTime)))
Ejemplo n.º 4
0
def alarm_handler(signo, frame):
    global trafficBytes1, trafficPackets1, startTime
    toWait = benchTools.toWait
    statsMap = benchTools.statsMap
    nClients = benchTools.nClients
    firstReceiveTime = benchTools.firstReceiveTime
    lattestUnconsistentTime = benchTools.lattestUnconsistentTime
    nPublish = benchTools.nPublish
    if toWait > 0:
        print 'Waiting %d...' % toWait
    elif firstReceiveTime == None:
        print 'Waiting for a first synchronized publication'
    else:
        endTime = datetime.now()
        deltaTimeSec = benchTools.timeDeltaToMillis(endTime -
                                                    startTime) / 1000.
        os.system('cat /proc/net/dev | grep sl0 > .net_stats')
        devStats = filter(lambda c: c != '',
                          open('.net_stats', 'r').readline().split(' '))
        os.remove('.net_stats')
        trafficBytes2 = int(devStats[1]) + int(devStats[9])
        trafficPackets2 = int(devStats[2]) + int(devStats[10])
        trafficBytes = (trafficBytes2 - trafficBytes1) / float(deltaTimeSec)
        trafficPackets = (trafficPackets2 -
                          trafficPackets1) / float(deltaTimeSec)

        cptClients = 0
        print '----------------------------------'
        print 'id, port, mct, mpt, rpm, rpmu'
        keys = statsMap.keys()
        keys.sort()
        ptSum = 0
        ctSum = 0
        rpmSum = 0
        rpmuSum = 0
        rpmPercentSum = 0
        rpmuPercentSum = 0
        for key in keys:
            ctSum += statsMap[key]['tct']
            ptSum += statsMap[key]['tpt']
            rpmSum += statsMap[key]['rpm']
            rpmuSum += statsMap[key]['rpmu']
            mct = ratio(statsMap[key]['tct'], nPublish)
            mpt = ratio(statsMap[key]['tpt'], statsMap[key]['rpmu'])
            rpmPercent = 100 * ratio(statsMap[key]['rpm'], nPublish)
            rpmuPercent = 100 * ratio(statsMap[key]['rpmu'], nPublish)
            try:
                port = statsMap[key]['sock'].getsockname()[1]
            except:
                port = 0
            print '[%d, %d], %d, %d, %d, %d, %d%%, %d%%' % (
                key, port, mct, mpt, statsMap[key]['rpm'],
                statsMap[key]['rpmu'], rpmPercent, rpmuPercent)
        print 'id, mct, mpt, rpm, rpmu, nPublish (%d)' % (
            benchTools.timeDeltaToMillis(datetime.now() - firstReceiveTime) /
            1000.)
        print '--- mct, mpt, rpm, rpmu, nPublish, rpm%, rpmu%, ntb, ntp, ct%'
        print '[AVG] %d, %d, %d, %d, %d, %d%%, %d%%, %.1f, %.1f, %d%%' % (
            ratio(ctSum, nPublish * nClients), ratio(ptSum, rpmuSum),
            ratio(rpmSum, nClients), ratio(rpmuSum, nClients), nPublish,
            100 * ratio(rpmSum, nPublish * nClients),
            100 * ratio(rpmuSum, nPublish * nClients), trafficBytes,
            trafficPackets, 100 * ratio(
                ctSum,
                nClients * benchTools.timeDeltaToMillis(
                    lattestUnconsistentTime - firstReceiveTime)))

    signal.alarm(2)