mirror of
				https://github.com/ARM-software/workload-automation.git
				synced 2025-11-04 09:02:12 +00:00 
			
		
		
		
	iozone: Add descriptions and refactor code
Add test descriptions, remove defaults, and fix functions to parse non-thread related data. Signed-off-by: Lisa Nguyen <lisa.nguyen@linaro.org>
This commit is contained in:
		@@ -14,10 +14,12 @@
 | 
			
		||||
 | 
			
		||||
from wlauto import Workload, Parameter, Executable
 | 
			
		||||
from wlauto.exceptions import ConfigError
 | 
			
		||||
from wlauto.utils.types import list_of_strs
 | 
			
		||||
from wlauto.utils.types import list_of_ints
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import csv
 | 
			
		||||
from collections import OrderedDict
 | 
			
		||||
from itertools import izip_longest
 | 
			
		||||
 | 
			
		||||
iozone_results_txt = 'iozone_results.txt'
 | 
			
		||||
 | 
			
		||||
@@ -28,26 +30,81 @@ class Iozone(Workload):
 | 
			
		||||
    Iozone is a filesystem benchmark that runs a series of disk
 | 
			
		||||
    I/O performance tests.
 | 
			
		||||
 | 
			
		||||
    Here is a list of tests that you can run in the iozone 
 | 
			
		||||
    workload. The descriptions are from the official iozone 
 | 
			
		||||
    document.
 | 
			
		||||
 | 
			
		||||
    0  - Write Test
 | 
			
		||||
         Measure performance of writing a new file.
 | 
			
		||||
 | 
			
		||||
    1  - Rewrite Test
 | 
			
		||||
         Measure performance of writing an existing file.
 | 
			
		||||
 | 
			
		||||
    2  - Read Test
 | 
			
		||||
         Measure performance of reading an existing file.
 | 
			
		||||
 | 
			
		||||
    3  - Reread Test
 | 
			
		||||
         Measure performance of rereading an existing file.
 | 
			
		||||
 | 
			
		||||
    4  - Random Read Test
 | 
			
		||||
         Measure performance of reading a file by accessing
 | 
			
		||||
         random locations within the file.
 | 
			
		||||
                        
 | 
			
		||||
    5  - Random Write Test
 | 
			
		||||
         Measure performance of writing a file by accessing
 | 
			
		||||
         random locations within the file.
 | 
			
		||||
 | 
			
		||||
    6  - Backwards Read Test
 | 
			
		||||
         Measure performance of reading a file backwards.
 | 
			
		||||
 | 
			
		||||
    7  - Record Rewrite Test
 | 
			
		||||
         Measure performance of writing and rewriting a
 | 
			
		||||
         particular spot within the file. 
 | 
			
		||||
    
 | 
			
		||||
    8  - Strided Read Test
 | 
			
		||||
         Measure performance of reading a file with strided
 | 
			
		||||
         access behavior.
 | 
			
		||||
 | 
			
		||||
    9  - Fwrite Test
 | 
			
		||||
         Measure performance of writing a file using the 
 | 
			
		||||
         library function fwrite() that performances
 | 
			
		||||
         buffered write operations.
 | 
			
		||||
 | 
			
		||||
    10 - Frewrite Test
 | 
			
		||||
         Measure performance of writing a file using the 
 | 
			
		||||
         the library function fwrite() that performs 
 | 
			
		||||
         buffered and blocked write operations.
 | 
			
		||||
`
 | 
			
		||||
    11 - Fread Test
 | 
			
		||||
         Measure performance of reading a file using the
 | 
			
		||||
         library function fread() that performs buffered 
 | 
			
		||||
         and blocked read operations.
 | 
			
		||||
 
 | 
			
		||||
    12 - Freread Test
 | 
			
		||||
         Same as the Fread Test except the current file 
 | 
			
		||||
         being read was read previously sometime in the
 | 
			
		||||
         past. 
 | 
			
		||||
 | 
			
		||||
    By default, iozone will run all tests in auto mode. To run
 | 
			
		||||
    specific tests, they must be written in the form of:
 | 
			
		||||
 | 
			
		||||
    ['0', '1', '5', '6']
 | 
			
		||||
    [0,1,4,5]
 | 
			
		||||
 | 
			
		||||
    The official website for iozone is at www.iozone.org.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    parameters = [
 | 
			
		||||
        Parameter('tests', kind=list_of_strs, default=[],
 | 
			
		||||
        Parameter('tests', kind=list_of_ints, allowed_values=range(13),
 | 
			
		||||
                  description='List of performance tests to run.'),
 | 
			
		||||
        Parameter('auto_mode', kind=bool, default=True,
 | 
			
		||||
                  description='Run tests in auto mode.'),
 | 
			
		||||
        Parameter('timeout', kind=int, default=14400,
 | 
			
		||||
                  description='Timeout for the workload.'),
 | 
			
		||||
        Parameter('file_size', kind=int, default=0,
 | 
			
		||||
        Parameter('file_size', kind=int,
 | 
			
		||||
                  description='Fixed file size.'),
 | 
			
		||||
        Parameter('record_length', kind=int, default=0,
 | 
			
		||||
        Parameter('record_length', kind=int,
 | 
			
		||||
                  description='Fixed record length.'),
 | 
			
		||||
        Parameter('threads', kind=int, default=0,
 | 
			
		||||
        Parameter('threads', kind=int,
 | 
			
		||||
                  description='Number of threads'),
 | 
			
		||||
        Parameter('other_params', kind=str, default='',
 | 
			
		||||
                  description='Other parameter. Run iozone -h to see'
 | 
			
		||||
@@ -184,16 +241,28 @@ class Iozone(Workload):
 | 
			
		||||
                value_list.append(subvalue_list)
 | 
			
		||||
                subvalue_list = []
 | 
			
		||||
 | 
			
		||||
        for group in value_list:
 | 
			
		||||
            classifier = {'header': group[0]}
 | 
			
		||||
            record_lens = group[2:]
 | 
			
		||||
            for rec in record_lens:
 | 
			
		||||
                context.add_metric('reclen', int(rec[0]), 'kb',
 | 
			
		||||
                                   classifiers=classifier)
 | 
			
		||||
                values = rec[1:]
 | 
			
		||||
                for v in values:
 | 
			
		||||
                    context.add_metric('bytes', int(v), 'kb',
 | 
			
		||||
                                       classifiers=classifier)
 | 
			
		||||
        for reports in value_list:
 | 
			
		||||
            # grab report name and convert it to a string
 | 
			
		||||
            report_name = reports[0]
 | 
			
		||||
            report_name = report_name[:-1]
 | 
			
		||||
            report_name = '_'.join(report_name).lower()
 | 
			
		||||
 | 
			
		||||
            record_sizes = reports[1]
 | 
			
		||||
            values = reports[2:]
 | 
			
		||||
                
 | 
			
		||||
            for data in values:
 | 
			
		||||
                temp = OrderedDict(izip_longest(record_sizes, data))
 | 
			
		||||
                
 | 
			
		||||
                for reclen,value in temp.items():
 | 
			
		||||
                    if reclen is '0':
 | 
			
		||||
                        fs = value
 | 
			
		||||
                       
 | 
			
		||||
                    if value is None:
 | 
			
		||||
                        value = '0'
 | 
			
		||||
                        
 | 
			
		||||
                    classifier = {'reclen': reclen, 'file_size': fs}
 | 
			
		||||
                    if reclen != '0':
 | 
			
		||||
                        context.add_metric(report_name, int(value), 'kb/s', classifiers=classifier)
 | 
			
		||||
 | 
			
		||||
    # parse thread-mode results
 | 
			
		||||
    def parse_thread_results(self):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user