blob: a1da1c34e202bea24cf2c6d6d53a51e3e3d88f79 [file] [log] [blame]
koder aka kdanilov66839a92015-04-11 13:22:31 +03001import texttable
2
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +03003from wally.utils import ssize_to_b
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +03004from wally.suits.io.agent import get_test_summary
koder aka kdanilove87ae652015-04-20 02:14:35 +03005from wally.statistic import med_dev, round_deviation, round_3_digit
koder aka kdanilov66839a92015-04-11 13:22:31 +03006
koder aka kdanilov66839a92015-04-11 13:22:31 +03007
koder aka kdanilov652cd802015-04-13 12:21:07 +03008def key_func(k_data):
9 _, data = k_data
10
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030011 return (data['rw'],
12 data['sync_mode'],
13 ssize_to_b(data['blocksize']),
14 data['concurence'])
Yulia Portnova7ddfa732015-02-24 17:32:58 +020015
16
koder aka kdanilov66839a92015-04-11 13:22:31 +030017def format_results_for_console(test_set):
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030018 """
19 create a table with io performance report
20 for console
21 """
koder aka kdanilov66839a92015-04-11 13:22:31 +030022 tab = texttable.Texttable()
koder aka kdanilov652cd802015-04-13 12:21:07 +030023 tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
koder aka kdanilov66839a92015-04-11 13:22:31 +030024 tab.set_cols_align(["l", "r", "r", "r", "r"])
Yulia Portnova7ddfa732015-02-24 17:32:58 +020025
koder aka kdanilov652cd802015-04-13 12:21:07 +030026 prev_k = None
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030027 items = sorted(test_set['res'].items(), key=key_func)
koder aka kdanilov652cd802015-04-13 12:21:07 +030028
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 kdanilovcff7b2e2015-04-18 20:48:15 +030034 tab.add_row(["---"] * 5)
koder aka kdanilov652cd802015-04-13 12:21:07 +030035
36 prev_k = curr_k
37
koder aka kdanilov4e9f3ed2015-04-14 11:26:12 +030038 descr = get_test_summary(data)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020039
koder aka kdanilove87ae652015-04-20 02:14:35 +030040 iops, _ = round_deviation(med_dev(data['iops']))
41 bw, bwdev = round_deviation(med_dev(data['bw']))
Yulia Portnova7ddfa732015-02-24 17:32:58 +020042
koder aka kdanilov66839a92015-04-11 13:22:31 +030043 # 3 * sigma
koder aka kdanilove87ae652015-04-20 02:14:35 +030044 if 0 == bw:
45 assert 0 == bwdev
46 dev_perc = 0
47 else:
48 dev_perc = int((bwdev * 300) / bw)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020049
koder aka kdanilove87ae652015-04-20 02:14:35 +030050 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 kdanilovcff7b2e2015-04-18 20:48:15 +030058 tab.add_row(params)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020059
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030060 header = ["Description", "IOPS", "BW KiBps", "Dev * 3 %", "clat ms"]
koder aka kdanilov652cd802015-04-13 12:21:07 +030061 tab.header(header)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020062
koder aka kdanilov66839a92015-04-11 13:22:31 +030063 return tab.draw()