Source

linux-scalability-benchmarks / sockbench / runtest.py

The default branch has multiple heads

#!/usr/bin/python

import os, re, math
from subprocess import *

# corelist = [1]
corelist = [1, 2, 3, 4, 5, 6, 7, 8]
repeat = 10

log = open('stat.log', 'w')

def stddev(num):
    l = map(float, num)
    a = avg(num)
    s = 0.0
    for x in l:
        s += (a - x) * (a - x)
    s /= len(l) - 1
    return math.sqrt(s)

def avg(num):
    l = map(float, num)
    return sum(l) / len(l)

def warmup():
    print('Warming up...')
    p = Popen('./sockbench 1', shell=True, stdout=PIPE)
    os.waitpid(p.pid, 0)

def test():
    print('Begin testing...')
    pattern = re.compile(r'usec: (\d+)')
    for n in corelist:
        stats = []
        for i in xrange(repeat):
            p = Popen('./sockbench %d' % n, shell=True, stdout=PIPE)
            os.waitpid(p.pid, 0)
            output = p.stdout.read().strip()
            usec = int(pattern.search(output).group(1))
            stats.append(usec)
            log.write('%d: %d\n' % (n, usec))
            print('%d: %d' % (n, usec))
        print('Core #%d: averge %f, std deviation %f' % (n, avg(stats), stddev(stats)))

warmup()
test()

log.close()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.