mirror of
				https://github.com/ARM-software/workload-automation.git
				synced 2025-10-31 15:12:25 +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 import Workload, Parameter, Executable | ||||||
| from wlauto.exceptions import ConfigError | from wlauto.exceptions import ConfigError | ||||||
| from wlauto.utils.types import list_of_strs | from wlauto.utils.types import list_of_ints | ||||||
| import os | import os | ||||||
| import re | import re | ||||||
| import csv | import csv | ||||||
|  | from collections import OrderedDict | ||||||
|  | from itertools import izip_longest | ||||||
|  |  | ||||||
| iozone_results_txt = 'iozone_results.txt' | iozone_results_txt = 'iozone_results.txt' | ||||||
|  |  | ||||||
| @@ -28,26 +30,81 @@ class Iozone(Workload): | |||||||
|     Iozone is a filesystem benchmark that runs a series of disk |     Iozone is a filesystem benchmark that runs a series of disk | ||||||
|     I/O performance tests. |     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 |     By default, iozone will run all tests in auto mode. To run | ||||||
|     specific tests, they must be written in the form of: |     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. |     The official website for iozone is at www.iozone.org. | ||||||
|     """ |     """ | ||||||
|  |  | ||||||
|     parameters = [ |     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.'), |                   description='List of performance tests to run.'), | ||||||
|         Parameter('auto_mode', kind=bool, default=True, |         Parameter('auto_mode', kind=bool, default=True, | ||||||
|                   description='Run tests in auto mode.'), |                   description='Run tests in auto mode.'), | ||||||
|         Parameter('timeout', kind=int, default=14400, |         Parameter('timeout', kind=int, default=14400, | ||||||
|                   description='Timeout for the workload.'), |                   description='Timeout for the workload.'), | ||||||
|         Parameter('file_size', kind=int, default=0, |         Parameter('file_size', kind=int, | ||||||
|                   description='Fixed file size.'), |                   description='Fixed file size.'), | ||||||
|         Parameter('record_length', kind=int, default=0, |         Parameter('record_length', kind=int, | ||||||
|                   description='Fixed record length.'), |                   description='Fixed record length.'), | ||||||
|         Parameter('threads', kind=int, default=0, |         Parameter('threads', kind=int, | ||||||
|                   description='Number of threads'), |                   description='Number of threads'), | ||||||
|         Parameter('other_params', kind=str, default='', |         Parameter('other_params', kind=str, default='', | ||||||
|                   description='Other parameter. Run iozone -h to see' |                   description='Other parameter. Run iozone -h to see' | ||||||
| @@ -184,16 +241,28 @@ class Iozone(Workload): | |||||||
|                 value_list.append(subvalue_list) |                 value_list.append(subvalue_list) | ||||||
|                 subvalue_list = [] |                 subvalue_list = [] | ||||||
|  |  | ||||||
|         for group in value_list: |         for reports in value_list: | ||||||
|             classifier = {'header': group[0]} |             # grab report name and convert it to a string | ||||||
|             record_lens = group[2:] |             report_name = reports[0] | ||||||
|             for rec in record_lens: |             report_name = report_name[:-1] | ||||||
|                 context.add_metric('reclen', int(rec[0]), 'kb', |             report_name = '_'.join(report_name).lower() | ||||||
|                                    classifiers=classifier) |  | ||||||
|                 values = rec[1:] |             record_sizes = reports[1] | ||||||
|                 for v in values: |             values = reports[2:] | ||||||
|                     context.add_metric('bytes', int(v), 'kb', |                  | ||||||
|                                        classifiers=classifier) |             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 |     # parse thread-mode results | ||||||
|     def parse_thread_results(self): |     def parse_thread_results(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user