koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 1 | import texttable |
| 2 | |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 3 | from wally.utils import ssize_to_b |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 4 | from wally.suits.io.agent import get_test_summary |
koder aka kdanilov | e87ae65 | 2015-04-20 02:14:35 +0300 | [diff] [blame] | 5 | from wally.statistic import med_dev, round_deviation, round_3_digit |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 6 | |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 7 | |
koder aka kdanilov | 652cd80 | 2015-04-13 12:21:07 +0300 | [diff] [blame] | 8 | def key_func(k_data): |
| 9 | _, data = k_data |
| 10 | |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 11 | return (data['rw'], |
| 12 | data['sync_mode'], |
| 13 | ssize_to_b(data['blocksize']), |
| 14 | data['concurence']) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 15 | |
| 16 | |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 17 | def format_results_for_console(test_set): |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 18 | """ |
| 19 | create a table with io performance report |
| 20 | for console |
| 21 | """ |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 22 | tab = texttable.Texttable() |
koder aka kdanilov | 652cd80 | 2015-04-13 12:21:07 +0300 | [diff] [blame] | 23 | tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER) |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 24 | tab.set_cols_align(["l", "r", "r", "r", "r"]) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 25 | |
koder aka kdanilov | 652cd80 | 2015-04-13 12:21:07 +0300 | [diff] [blame] | 26 | prev_k = None |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 27 | items = sorted(test_set['res'].items(), key=key_func) |
koder aka kdanilov | 652cd80 | 2015-04-13 12:21:07 +0300 | [diff] [blame] | 28 | |
| 29 | for test_name, data in items: |
| 30 | curr_k = key_func((test_name, data))[:3] |
| 31 | |
| 32 | if prev_k is not None: |
| 33 | if prev_k != curr_k: |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 34 | tab.add_row(["---"] * 5) |
koder aka kdanilov | 652cd80 | 2015-04-13 12:21:07 +0300 | [diff] [blame] | 35 | |
| 36 | prev_k = curr_k |
| 37 | |
koder aka kdanilov | 4e9f3ed | 2015-04-14 11:26:12 +0300 | [diff] [blame] | 38 | descr = get_test_summary(data) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 39 | |
koder aka kdanilov | e87ae65 | 2015-04-20 02:14:35 +0300 | [diff] [blame] | 40 | iops, _ = round_deviation(med_dev(data['iops'])) |
| 41 | bw, bwdev = round_deviation(med_dev(data['bw'])) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 42 | |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 43 | # 3 * sigma |
koder aka kdanilov | e87ae65 | 2015-04-20 02:14:35 +0300 | [diff] [blame] | 44 | if 0 == bw: |
| 45 | assert 0 == bwdev |
| 46 | dev_perc = 0 |
| 47 | else: |
| 48 | dev_perc = int((bwdev * 300) / bw) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 49 | |
koder aka kdanilov | e87ae65 | 2015-04-20 02:14:35 +0300 | [diff] [blame] | 50 | med_lat, _ = round_deviation(med_dev(data['lat'])) |
| 51 | med_lat = int(med_lat) // 1000 |
| 52 | |
| 53 | iops = round_3_digit(iops) |
| 54 | bw = round_3_digit(bw) |
| 55 | med_lat = round_3_digit(med_lat) |
| 56 | |
| 57 | params = (descr, int(iops), int(bw), dev_perc, med_lat) |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 58 | tab.add_row(params) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 59 | |
koder aka kdanilov | cff7b2e | 2015-04-18 20:48:15 +0300 | [diff] [blame] | 60 | header = ["Description", "IOPS", "BW KiBps", "Dev * 3 %", "clat ms"] |
koder aka kdanilov | 652cd80 | 2015-04-13 12:21:07 +0300 | [diff] [blame] | 61 | tab.header(header) |
Yulia Portnova | 7ddfa73 | 2015-02-24 17:32:58 +0200 | [diff] [blame] | 62 | |
koder aka kdanilov | 66839a9 | 2015-04-11 13:22:31 +0300 | [diff] [blame] | 63 | return tab.draw() |