4
4
5
5
import pandas as pd
6
6
7
+ # redis_regex_patterns = {
8
+ # "read_time": r'reader thread took: ([\d.]+) seconds',
9
+ # "read_avg_latency": r'\[READ\] average latency ([\d.]+) us',
10
+ # "read_throughput": r'\[READ\] average latency [\d.]+ us throughput ([\d.]+) ops/sec',
11
+ # "update_time": r'update took: ([\d.]+) seconds',
12
+ # "update_avg_latency": r'\[UPDATE\] average latency ([\d.]+) us',
13
+ # "update_throughput": r'\[UPDATE\] average latency [\d.]+ us throughput ([\d.]+) ops/sec',
14
+ # "running_phase_time": r'Running phase took: ([\d.]+) seconds',
15
+ # "running_phase_throughput": r'Running phase overall throughput: ([\d.]+) ops/sec',
16
+ # "total_time": r'Took: ([\d.]+) seconds'
17
+ # }
18
+
7
19
redis_regex_patterns = {
8
- "read_time" : r'reader thread took: ([\d.]+) seconds' ,
9
- "read_avg_latency" : r'\[READ\] average latency ([\d.]+) us' ,
10
- "read_throughput" : r'\[READ\] average latency [\d.]+ us throughput ([\d.]+) ops/sec' ,
11
- "update_time" : r'update took: ([\d.]+) seconds' ,
12
- "update_avg_latency" : r'\[UPDATE\] average latency ([\d.]+) us' ,
13
- "update_throughput" : r'\[UPDATE\] average latency [\d.]+ us throughput ([\d.]+) ops/sec' ,
14
- "running_phase_time" : r'Running phase took: ([\d.]+) seconds' ,
15
- "running_phase_throughput" : r'Running phase overall throughput: ([\d.]+) ops/sec' ,
16
- "total_time" : r'Took: ([\d.]+) seconds'
20
+ "read_precise_time" : r'\[READ\] precise time: (\d+) ns' ,
21
+ "read_precise_throughput" : r'\[READ\] precise throughput: ([\d.]+) ops/sec' ,
22
+ "read_precise_avg_latency" : r'\[READ\] precise average latency ([\d.]+) ns' ,
23
+ "read_precise_p90" : r'\[READ\].*p90 (\d+)' ,
24
+ "read_precise_p95" : r'\[READ\].*p95 (\d+)' ,
25
+ "read_precise_p99" : r'\[READ\].*p99 (\d+)' ,
26
+ "read_precise_p999" : r'\[READ\].*p999 (\d+)' ,
27
+
28
+ "update_precise_time" : r'\[UPDATE\] precise time: (\d+) ns' ,
29
+ "update_precise_throughput" : r'\[UPDATE\] precise throughput: ([\d.]+) ops/sec' ,
30
+ "update_precise_avg_latency" : r'\[UPDATE\] precise average latency ([\d.]+) ns' ,
31
+ "update_precise_p90" : r'\[UPDATE\].*p90 (\d+)' ,
32
+ "update_precise_p95" : r'\[UPDATE\].*p95 (\d+)' ,
33
+ "update_precise_p99" : r'\[UPDATE\].*p99 (\d+)' ,
34
+ "update_precise_p999" : r'\[UPDATE\].*p999 (\d+)' ,
35
+
36
+ "running_phase_precise_time" : r'Running phase precise time: (\d+) ns' ,
37
+ "running_phase_precise_throughput" : r'Running phase precise throughput: ([\d.]+) ops/sec' ,
38
+ "running_phase_precise_avg_latency" : r'Running phase precise average latency ([\d.]+) ns' ,
39
+ "running_phase_precise_p90" : r'Running phase.*p90 (\d+)' ,
40
+ "running_phase_precise_p95" : r'Running phase.*p95 (\d+)' ,
41
+ "running_phase_precise_p99" : r'Running phase.*p99 (\d+)' ,
42
+ "running_phase_precise_p999" : r'Running phase.*p999 (\d+)' ,
17
43
}
18
44
45
+ # memcached_regex_patterns = {
46
+ # "running_phase_time": r'Running phase took: ([\d.]+) seconds',
47
+ # "running_phase_avg_latency": r'Running phase average latency ([\d.]+) us',
48
+ # "running_phase_throughput": r'Running phase average latency [\d.]+ us, throughput ([\d.]+) ops/sec',
49
+ # "read_operations": r'\[READ\] ([\d.]+) operations',
50
+ # "read_avg_latency": r'\[READ\] [\d.]+ operations, average latency ([\d.]+) us',
51
+ # "read_throughput": r'\[READ\] [\d.]+ operations, average latency [\d.]+ us, throughput ([\d.]+) ops/sec',
52
+ # "update_operations": r'\[UPDATE\] ([\d.]+) operations',
53
+ # "update_avg_latency": r'\[UPDATE\] [\d.]+ operations, average latency ([\d.]+) us',
54
+ # "update_throughput": r'\[UPDATE\] [\d.]+ operations, average latency [\d.]+ us, throughput ([\d.]+) ops/sec'
55
+ # }
56
+
19
57
memcached_regex_patterns = {
20
- "running_phase_time" : r'Running phase took: ([\d.]+) seconds' ,
21
- "running_phase_avg_latency" : r'Running phase average latency ([\d.]+) us' ,
22
- "running_phase_throughput" : r'Running phase average latency [\d.]+ us, throughput ([\d.]+) ops/sec' ,
23
- "read_operations" : r'\[READ\] ([\d.]+) operations' ,
24
- "read_avg_latency" : r'\[READ\] [\d.]+ operations, average latency ([\d.]+) us' ,
25
- "read_throughput" : r'\[READ\] [\d.]+ operations, average latency [\d.]+ us, throughput ([\d.]+) ops/sec' ,
26
- "update_operations" : r'\[UPDATE\] ([\d.]+) operations' ,
27
- "update_avg_latency" : r'\[UPDATE\] [\d.]+ operations, average latency ([\d.]+) us' ,
28
- "update_throughput" : r'\[UPDATE\] [\d.]+ operations, average latency [\d.]+ us, throughput ([\d.]+) ops/sec'
58
+ "read_precise_time" : r'\[READ\] precise time: (\d+) ns' ,
59
+ "read_precise_throughput" : r'\[READ\] precise throughput: ([\d.]+) ops/sec' ,
60
+ "read_precise_avg_latency" : r'\[READ\] precise average latency ([\d.]+) ns' ,
61
+ "read_precise_p90" : r'\[READ\].*p90 (\d+)' ,
62
+ "read_precise_p95" : r'\[READ\].*p95 (\d+)' ,
63
+ "read_precise_p99" : r'\[READ\].*p99 (\d+)' ,
64
+ "read_precise_p999" : r'\[READ\].*p999 (\d+)' ,
65
+
66
+ "update_precise_time" : r'\[UPDATE\] precise time: (\d+) ns' ,
67
+ "update_precise_throughput" : r'\[UPDATE\] precise throughput: ([\d.]+) ops/sec' ,
68
+ "update_precise_avg_latency" : r'\[UPDATE\] precise average latency ([\d.]+) ns' ,
69
+ "update_precise_p90" : r'\[UPDATE\].*p90 (\d+)' ,
70
+ "update_precise_p95" : r'\[UPDATE\].*p95 (\d+)' ,
71
+ "update_precise_p99" : r'\[UPDATE\].*p99 (\d+)' ,
72
+ "update_precise_p999" : r'\[UPDATE\].*p999 (\d+)' ,
73
+
74
+ "running_phase_precise_time" : r'Running phase precise time: (\d+) ns' ,
75
+ "running_phase_precise_throughput" : r'Running phase precise throughput: ([\d.]+) ops/sec' ,
76
+ "running_phase_precise_avg_latency" : r'Running phase precise average latency ([\d.]+) ns' ,
77
+ "running_phase_precise_p90" : r'Running phase.*p90 (\d+)' ,
78
+ "running_phase_precise_p95" : r'Running phase.*p95 (\d+)' ,
79
+ "running_phase_precise_p99" : r'Running phase.*p99 (\d+)' ,
80
+ "running_phase_precise_p999" : r'Running phase.*p999 (\d+)' ,
29
81
}
30
82
83
+ # postgres_regex_patterns = {
84
+ # "running_phase_operations": r'Running phase (\d+) operations took: [\d.]+ seconds',
85
+ # "running_phase_time": r'Running phase \d+ operations took: ([\d.]+) seconds',
86
+ # "running_phase_avg_latency": r'Running phase average latency ([\d.]+) us',
87
+ # "running_phase_throughput": r'Running phase average latency [\d.]+ us, throughput ([\d.]+) ops/sec'
88
+ # }
89
+
31
90
postgres_regex_patterns = {
32
- "running_phase_operations" : r'Running phase (\d+) operations took: [\d.]+ seconds' ,
33
- "running_phase_time" : r'Running phase \d+ operations took: ([\d.]+) seconds' ,
34
- "running_phase_avg_latency" : r'Running phase average latency ([\d.]+) us' ,
35
- "running_phase_throughput" : r'Running phase average latency [\d.]+ us, throughput ([\d.]+) ops/sec'
91
+ "read_precise_time" : r'\[READ\] precise time: (\d+) ns' ,
92
+ "read_precise_throughput" : r'\[READ\] precise throughput: ([\d.]+) ops/sec' ,
93
+ "read_precise_avg_latency" : r'\[READ\] precise average latency ([\d.]+) ns' ,
94
+ "read_precise_p90" : r'\[READ\].*p90 (\d+)' ,
95
+ "read_precise_p95" : r'\[READ\].*p95 (\d+)' ,
96
+ "read_precise_p99" : r'\[READ\].*p99 (\d+)' ,
97
+ "read_precise_p999" : r'\[READ\].*p999 (\d+)' ,
98
+
99
+ "update_precise_time" : r'\[UPDATE\] precise time: (\d+) ns' ,
100
+ "update_precise_throughput" : r'\[UPDATE\] precise throughput: ([\d.]+) ops/sec' ,
101
+ "update_precise_avg_latency" : r'\[UPDATE\] precise average latency ([\d.]+) ns' ,
102
+ "update_precise_p90" : r'\[UPDATE\].*p90 (\d+)' ,
103
+ "update_precise_p95" : r'\[UPDATE\].*p95 (\d+)' ,
104
+ "update_precise_p99" : r'\[UPDATE\].*p99 (\d+)' ,
105
+ "update_precise_p999" : r'\[UPDATE\].*p999 (\d+)' ,
106
+
107
+ "running_phase_precise_time" : r'Running phase precise time: (\d+) ns' ,
108
+ "running_phase_precise_throughput" : r'Running phase precise throughput: ([\d.]+) ops/sec' ,
109
+ "running_phase_precise_avg_latency" : r'Running phase precise average latency ([\d.]+) ns' ,
110
+ "running_phase_precise_p90" : r'Running phase.*p90 (\d+)' ,
111
+ "running_phase_precise_p95" : r'Running phase.*p95 (\d+)' ,
112
+ "running_phase_precise_p99" : r'Running phase.*p99 (\d+)' ,
113
+ "running_phase_precise_p999" : r'Running phase.*p999 (\d+)' ,
36
114
}
37
115
38
116
def parse_log (log_text , regex_patterns ):
@@ -78,14 +156,14 @@ def select_start_line_key(file_name):
78
156
raise ValueError ("Unknown folder type" )
79
157
return None
80
158
81
- def select_regex (file_name ):
82
- if "redis" in folder :
159
+ def select_regex (log_file ):
160
+ if "redis" in log_file :
83
161
return redis_regex_patterns
84
162
85
- if "memcached" in folder :
163
+ if "memcached" in log_file :
86
164
return memcached_regex_patterns
87
165
88
- if "postgres" in folder :
166
+ if "postgres" in log_file :
89
167
return postgres_regex_patterns
90
168
91
169
raise ValueError ("Unknown folder type" )
@@ -118,7 +196,7 @@ def parse_folder(folder):
118
196
119
197
log_files .sort ()
120
198
121
- print (log_files )
199
+ # print (log_files)
122
200
data_list = []
123
201
124
202
for log_file in log_files :
@@ -137,12 +215,37 @@ def parse_folder(folder):
137
215
# parsed_data = parse_real_bench("redis_5.15.0-vanilla_THP_never_standalone_iter0.txt")
138
216
# print(parsed_data)
139
217
140
- folder = "test_results/redis"
141
- parse_folder (folder )
218
+ # folder = "paper_results/redis128G-tail-5.15.0-gen-x86-THP_never-2024-12-05_19-26-12"
219
+ # parse_folder(folder)
220
+
221
+ # folder = "paper_results/redis128G-tail-5.15.0-vanilla-THP_never-2024-12-05_16-47-41"
222
+ # parse_folder(folder)
142
223
143
- folder = "test_results/memcached"
144
- parse_folder (folder )
224
+ import argparse
225
+
226
+ parser = argparse .ArgumentParser (
227
+ description = "Demo script that greets N times."
228
+ )
229
+ parser .add_argument ("--folder" , type = str , help = "folder to parse" )
145
230
146
- folder = "test_results/postgres"
147
- parse_folder (folder )
231
+ args = parser .parse_args ()
232
+
233
+ if args .folder :
234
+ folder = args .folder
235
+ parse_folder (folder )
236
+ # exit(0)
237
+
238
+
239
+
240
+ # folder = "paper_results/memcached-tail-5.15.0-gen-x86-THP_never-2024-12-06_14-19-15"
241
+ # parse_folder(folder)
242
+
243
+ # folder = "paper_results/memcached-tail-5.15.0-vanilla-THP_never-2024-12-07_00-07-21"
244
+ # parse_folder(folder)
245
+
246
+ # folder = "paper_results/postgres-tail-25M-5.15.0-gen-x86-THP_never-2024-12-06_12-54-36"
247
+ # parse_folder(folder)
248
+
249
+ # folder = "paper_results/postgres-tail-25M-5.15.0-vanilla-THP_never-2024-12-06_22-43-03"
250
+ # parse_folder(folder)
148
251
0 commit comments