Skip to content

Commit 4a886eb

Browse files
run script for AE
1 parent 014c08e commit 4a886eb

File tree

6 files changed

+478
-33
lines changed

6 files changed

+478
-33
lines changed

parse_real_bench.py

Lines changed: 136 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,113 @@
44

55
import pandas as pd
66

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+
719
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+)',
1743
}
1844

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+
1957
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+)',
2981
}
3082

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+
3190
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+)',
36114
}
37115

38116
def parse_log(log_text, regex_patterns):
@@ -78,14 +156,14 @@ def select_start_line_key(file_name):
78156
raise ValueError("Unknown folder type")
79157
return None
80158

81-
def select_regex(file_name):
82-
if "redis" in folder:
159+
def select_regex(log_file):
160+
if "redis" in log_file:
83161
return redis_regex_patterns
84162

85-
if "memcached" in folder:
163+
if "memcached" in log_file:
86164
return memcached_regex_patterns
87165

88-
if "postgres" in folder:
166+
if "postgres" in log_file:
89167
return postgres_regex_patterns
90168

91169
raise ValueError("Unknown folder type")
@@ -118,7 +196,7 @@ def parse_folder(folder):
118196

119197
log_files.sort()
120198

121-
print (log_files)
199+
# print (log_files)
122200
data_list = []
123201

124202
for log_file in log_files:
@@ -137,12 +215,37 @@ def parse_folder(folder):
137215
# parsed_data = parse_real_bench("redis_5.15.0-vanilla_THP_never_standalone_iter0.txt")
138216
# print(parsed_data)
139217

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)
142223

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")
145230

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)
148251

run_all.sh

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/usr/bin/env bash
2+
3+
result_dir="ae_result/${USER}"
4+
5+
mkdir -p $result_dir
6+
7+
KERNEL_NAME=`uname -r`
8+
THP_CONFIG="no_thp_support"
9+
thp_file="/sys/kernel/mm/transparent_hugepage/enabled"
10+
11+
# Check if the file exists
12+
if [[ -f $thp_file ]]; then
13+
# Read the content of the file
14+
content=$(cat $thp_file)
15+
16+
# Check if 'always' or 'madvise' is active (indicated by the [brackets])
17+
if [[ $content == *"[always]"* ]]; then
18+
THP_CONFIG="THP_always"
19+
elif [[ $content == *"[madvise]"* ]]; then
20+
THP_CONFIG="THP_madvise"
21+
elif [[ $content == *"[never]"* ]]; then
22+
THP_CONFIG="THP_never"
23+
else
24+
echo "Unable to determine the status of Transparent Huge Pages."
25+
fi
26+
else
27+
echo "Transparent Huge Pages is not supported on this system."
28+
fi
29+
30+
bench_out="$result_dir/${KERNEL_NAME}_${THP_CONFIG}_app.csv"
31+
32+
python3 run_scripts/bench_ae.py --out $bench_out
33+
34+
sleep 5
35+
36+
echo "starting Real applications"
37+
38+
redis_folder="${result_dir}/redis_${KERNEL_NAME}_${THP_CONFIG}/"
39+
./run_scripts/redis_ae.sh ${redis_folder}
40+
python3 parse_real_bench.py --folder ${redis_folder}
41+
sleep 5
42+
43+
postgres_folder="${result_dir}/postgres_${KERNEL_NAME}_${THP_CONFIG}/"
44+
./run_scripts/postgres_st_ae.sh ${postgres_folder}
45+
python3 parse_real_bench.py --folder ${postgres_folder}
46+
47+
sleep 5
48+
memcached_folder="${result_dir}/memcached_${KERNEL_NAME}_${THP_CONFIG}/"
49+
./run_scripts/memcached_st_ae.sh ${memcached_folder}
50+
python3 parse_real_bench.py --folder ${memcached_folder}
51+
52+
sleep 2
53+
54+
55+
echo "Benchmarking completed. Results saved to $bench_out"
56+
echo "Redis benchmark done. Output folder: $redis_folder"
57+
echo "Postgres benchmark done. Output folder: $postgres_folder"
58+
echo "Memcached benchmark done. Output folder: $memcached_folder"

0 commit comments

Comments
 (0)