You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.4 KiB
65 lines
2.4 KiB
AUTHOR = "kdlucas@google.com (Kelly Lucas)"
|
|
TIME = "MEDIUM"
|
|
NAME = "Netpipe Stress"
|
|
TEST_CATEGORY = "Stress"
|
|
TEST_CLASS = 'Network'
|
|
TEST_TYPE = "Server"
|
|
SYNC_COUNT = 2
|
|
DOC = """
|
|
netpipe_stress is a test which produces bandwidth and latency values for
|
|
incrementing buffer sizes. This stress test will run for approximately 1 hour.
|
|
If you need to adjust the run time, change the value of cycles in the run
|
|
function.
|
|
|
|
Arguments to run_test:
|
|
bidirectional - indicates whether the test should run simultaneously in both
|
|
directions
|
|
buffer_size - Sets the send and receive TCP buffer sizes (from man NPtcp)
|
|
upper_bound - Specify the upper boundary to the size of message being tested.
|
|
By default, NetPIPE will stop when the time to transmit a block
|
|
exceeds one second. (from man NPtcp)
|
|
variance - NetPIPE chooses the message sizes at regular intervals,
|
|
increasing them exponentially from the lower boundary to the
|
|
upper boundary. At each point, it also tests perturbations of 3
|
|
bytes above and 3 bytes below (default) each test point to find
|
|
idiosyncrasies in the system. This perturbation value can be
|
|
changed using using this option or turned off by setting
|
|
perturbation_size to 0. (from man NPtcp)
|
|
cycles - Number of times to repeat each test. Each cycle takes about 6
|
|
minutes to complete.
|
|
"""
|
|
|
|
from autotest_lib.server import utils
|
|
from six.moves import range
|
|
|
|
# Buffer sizes should not be less than 131072, as this will cause netpipe
|
|
# to hang.
|
|
buffer_sizes = {131072: 'small',
|
|
262144: 'medium',
|
|
524288: 'large',
|
|
1048576: 'huge',
|
|
}
|
|
cycles = 10
|
|
upper_bound = 1048576
|
|
variance = 17
|
|
|
|
def run(pair):
|
|
for x in range(cycles):
|
|
for b in buffer_sizes:
|
|
tag = 'netpipe' + buffer_sizes[b] + str(x)
|
|
job.run_test('netpipe', tag=tag, pair=pair, buffer=b,
|
|
upper_bound=upper_bound, variance=variance)
|
|
|
|
|
|
# grab the pairs (and failures)
|
|
print("Machines = %s" % machines)
|
|
(pairs, failures) = utils.form_ntuples_from_machines(machines, 2)
|
|
print("pairs = %s" % pairs)
|
|
|
|
# log the failures
|
|
for failure in failures:
|
|
job.record("FAIL", failure[0], "netpipe", failure[1])
|
|
|
|
# now run through each pair and run
|
|
job.parallel_simple(run, pairs, log=False)
|