Skip to content

Commit

Permalink
Bexhoma: Test pooling metrics at YCSB - at first without pooling
Browse files Browse the repository at this point in the history
  • Loading branch information
perdelt committed Jan 13, 2025
1 parent f8f4b93 commit 727e901
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 93 deletions.
157 changes: 84 additions & 73 deletions bexhoma/evaluators.py
Original file line number Diff line number Diff line change
Expand Up @@ -715,79 +715,87 @@ def benchmarking_set_datatypes(self, df):
:param df: DataFrame of results
:return: DataFrame of results
"""
df.fillna(0, inplace=True)
df_typed = df.astype({
'connection':'str',
'configuration':'str',
'experiment_run':'int',
'client':'int',
'pod':'str',
'pod_count':'int',
'threads':'int',
'target':'int',
'sf':'int',
'workload':'str',
'operations':'int',
'exceptions':'int',
'[OVERALL].RunTime(ms)':'float',
'[OVERALL].Throughput(ops/sec)':'float',
#'[TOTAL_GCS_PS_Scavenge].Count':'int',
#'[TOTAL_GC_TIME_PS_Scavenge].Time(ms)':'float',
#'[TOTAL_GC_TIME_%_PS_Scavenge].Time(%)':'float',
#'[TOTAL_GCS_PS_MarkSweep].Count':'int',
#'[TOTAL_GC_TIME_PS_MarkSweep].Time(ms)':'float',
#'[TOTAL_GC_TIME_%_PS_MarkSweep].Time(%)':'float',
#'[TOTAL_GCs].Count':'int',
#'[TOTAL_GC_TIME].Time(ms)':'float',
#'[TOTAL_GC_TIME_%].Time(%)':'float',
'[CLEANUP].Operations':'int',
'[CLEANUP].AverageLatency(us)':'float',
'[CLEANUP].MinLatency(us)':'float',
'[CLEANUP].MaxLatency(us)':'float',
'[CLEANUP].95thPercentileLatency(us)':'float',
'[CLEANUP].99thPercentileLatency(us)':'float',
})
if '[READ].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[READ].Operations':'int',
'[READ].AverageLatency(us)':'float',
'[READ].MinLatency(us)':'float',
'[READ].MaxLatency(us)':'float',
'[READ].95thPercentileLatency(us)':'float',
'[READ].99thPercentileLatency(us)':'float',
'[READ].Return=OK':'int',
})
if '[UPDATE].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[UPDATE].Operations':'int',
'[UPDATE].AverageLatency(us)':'float',
'[UPDATE].MinLatency(us)':'float',
'[UPDATE].MaxLatency(us)':'float',
'[UPDATE].95thPercentileLatency(us)':'float',
'[UPDATE].99thPercentileLatency(us)':'float',
'[UPDATE].Return=OK': 'int',
})
if '[INSERT].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[INSERT].Operations':'int',
'[INSERT].AverageLatency(us)':'float',
'[INSERT].MinLatency(us)':'float',
'[INSERT].MaxLatency(us)':'float',
'[INSERT].95thPercentileLatency(us)':'float',
'[INSERT].99thPercentileLatency(us)':'float',
'[INSERT].Return=OK': 'int',
})
if '[SCAN].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[SCAN].Operations':'int',
'[SCAN].AverageLatency(us)':'float',
'[SCAN].MinLatency(us)':'float',
'[SCAN].MaxLatency(us)':'float',
'[SCAN].95thPercentileLatency(us)':'float',
'[SCAN].99thPercentileLatency(us)':'float',
'[SCAN].Return=OK':'int',
try:
df.fillna(0, inplace=True)
df_typed = df.astype({
'connection':'str',
'configuration':'str',
'experiment_run':'int',
'client':'int',
'pod':'str',
'pod_count':'int',
'threads':'int',
'target':'int',
'sf':'int',
'workload':'str',
'operations':'int',
'exceptions':'int',
'[OVERALL].RunTime(ms)':'float',
'[OVERALL].Throughput(ops/sec)':'float',
#'[TOTAL_GCS_PS_Scavenge].Count':'int',
#'[TOTAL_GC_TIME_PS_Scavenge].Time(ms)':'float',
#'[TOTAL_GC_TIME_%_PS_Scavenge].Time(%)':'float',
#'[TOTAL_GCS_PS_MarkSweep].Count':'int',
#'[TOTAL_GC_TIME_PS_MarkSweep].Time(ms)':'float',
#'[TOTAL_GC_TIME_%_PS_MarkSweep].Time(%)':'float',
#'[TOTAL_GCs].Count':'int',
#'[TOTAL_GC_TIME].Time(ms)':'float',
#'[TOTAL_GC_TIME_%].Time(%)':'float',
})
return df_typed
if '[CLEANUP].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[CLEANUP].Operations':'int',
'[CLEANUP].AverageLatency(us)':'float',
'[CLEANUP].MinLatency(us)':'float',
'[CLEANUP].MaxLatency(us)':'float',
'[CLEANUP].95thPercentileLatency(us)':'float',
'[CLEANUP].99thPercentileLatency(us)':'float',
})
if '[READ].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[READ].Operations':'int',
'[READ].AverageLatency(us)':'float',
'[READ].MinLatency(us)':'float',
'[READ].MaxLatency(us)':'float',
'[READ].95thPercentileLatency(us)':'float',
'[READ].99thPercentileLatency(us)':'float',
'[READ].Return=OK':'int',
})
if '[UPDATE].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[UPDATE].Operations':'int',
'[UPDATE].AverageLatency(us)':'float',
'[UPDATE].MinLatency(us)':'float',
'[UPDATE].MaxLatency(us)':'float',
'[UPDATE].95thPercentileLatency(us)':'float',
'[UPDATE].99thPercentileLatency(us)':'float',
'[UPDATE].Return=OK': 'int',
})
if '[INSERT].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[INSERT].Operations':'int',
'[INSERT].AverageLatency(us)':'float',
'[INSERT].MinLatency(us)':'float',
'[INSERT].MaxLatency(us)':'float',
'[INSERT].95thPercentileLatency(us)':'float',
'[INSERT].99thPercentileLatency(us)':'float',
'[INSERT].Return=OK': 'int',
})
if '[SCAN].Operations'in df_typed.columns:
df_typed = df_typed.astype({
'[SCAN].Operations':'int',
'[SCAN].AverageLatency(us)':'float',
'[SCAN].MinLatency(us)':'float',
'[SCAN].MaxLatency(us)':'float',
'[SCAN].95thPercentileLatency(us)':'float',
'[SCAN].99thPercentileLatency(us)':'float',
'[SCAN].Return=OK':'int',
})
return df_typed
except Exception as e:
print(e)
#print(list_columns)
return df
def benchmarking_aggregate_by_parallel_pods(self, df):
"""
Transforms a pandas DataFrame collection of benchmarking results to a new DataFrame.
Expand Down Expand Up @@ -822,13 +830,16 @@ def benchmarking_aggregate_by_parallel_pods(self, df):
#'[TOTAL_GCs].Count':'sum',
#'[TOTAL_GC_TIME].Time(ms)':'max',
#'[TOTAL_GC_TIME_%].Time(%)':'max',
}
if '[CLEANUP].Operations' in grp.columns:
aggregate = {**aggregate, **{
'[CLEANUP].Operations':'sum',
'[CLEANUP].AverageLatency(us)':'mean',
'[CLEANUP].MinLatency(us)':'min',
'[CLEANUP].MaxLatency(us)':'max',
'[CLEANUP].95thPercentileLatency(us)':'mean',
'[CLEANUP].99thPercentileLatency(us)':'mean',
}
}}
if '[READ].Operations' in grp.columns:
aggregate = {**aggregate, **{
'[READ].Operations':'sum',
Expand Down
73 changes: 53 additions & 20 deletions test-pool.sh
Original file line number Diff line number Diff line change
Expand Up @@ -259,19 +259,45 @@ wait_process "ycsb"
####################################################


#BEXHOMA_NODE_SUT="cl-worker11"
#BEXHOMA_NODE_LOAD="cl-worker19"
#BEXHOMA_NODE_BENCHMARK="cl-worker11"
BEXHOMA_NODE_SUT="cl-worker11"
BEXHOMA_NODE_LOAD="cl-worker19"
BEXHOMA_NODE_BENCHMARK="cl-worker19"

BEXHOMA_YCSB_SF_DATA=16
BEXHOMA_YCSB_SF_OPS=16


### Small functional test
### Fixed nodes
### repeat for 1 driver and 8 drivers
### TODO: Do the same for PGBouncer sidecar? Check resources first
nohup python ycsb.py -ms 1 -tr \
-sf $BEXHOMA_YCSB_SF_DATA \
-sfo $BEXHOMA_YCSB_SF_OPS \
--workload c \
-dbms PostgreSQL \
-rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \
-tb 16384 \
-nlp 8 \
-nlt 64 \
-nlf 12 \
-nbp 1 \
-nbt 64 \
-nbf 12 \
-ne 1 \
-nc 1 \
-m -mc \
-rst shared -rss 50Gi \
run </dev/null &>$LOG_DIR/test_ycsb_testcase_cn_0.log &


wait_process "ycsb"


### Fixed nodes
### Scan for peak performance
### base is 16384 - scan from 98304 to 163840
### threads range from 48 to 96 in steps of 8
### base is 16384 - scan from 98304 to 229376
### threads range from 48 to 120 in steps of 8
### repeat for 1 driver and 8 drivers
### TODO: Do the same for PGBouncer sidecar? Check resources first
nohup python ycsb.py -ms 1 -tr \
Expand All @@ -285,8 +311,8 @@ nohup python ycsb.py -ms 1 -tr \
-nlt 64 \
-nlf 10 \
-nbp 1,8 \
-nbt 48,56,64,72,80,88,96 \
-nbf 6,7,8,9,10 \
-nbt 48,56,64,72,80,88,96,104,112,120 \
-nbf 6,7,8,9,10,11,12,13,14 \
-ne 1 \
-nc 1 \
-m -mc \
Expand All @@ -299,8 +325,8 @@ wait_process "ycsb"
### Same with PVC
### Fixed nodes
### Scan for peak performance
### base is 16384 - scan from 98304 to 163840
### threads range from 48 to 96 in steps of 8
### base is 16384 - scan from 98304 to 229376
### threads range from 48 to 120 in steps of 8
### repeat for 1 driver and 8 drivers
### TODO: Do the same for PGBouncer sidecar? Check resources first
nohup python ycsb.py -ms 1 -tr \
Expand All @@ -314,22 +340,25 @@ nohup python ycsb.py -ms 1 -tr \
-nlt 64 \
-nlf 10 \
-nbp 1,8 \
-nbt 48,56,64,72,80,88,96 \
-nbf 6,7,8,9,10 \
-nbt 48,56,64,72,80,88,96,104,112,120 \
-nbf 6,7,8,9,10,11,12,13,14 \
-ne 1 \
-nc 1 \
-rst shared -rss 50Gi \
-m -mc \
-rst shared -rss 50Gi \
run </dev/null &>$LOG_DIR/test_ycsb_testcase_cn_2.log &


wait_process "ycsb"


### Same with workload C2
### Fixed nodes
### Test workload C with uniform distribution
### Scan for peak performance
### base is 16384 - scan from 98304 to 229376
### threads range from 48 to 120 in steps of 8
### repeat for 1 driver and 8 drivers
### TODO: Set target and threads
### TODO: Do the same for PGBouncer sidecar? Check resources first
nohup python ycsb.py -ms 1 -tr \
-sf $BEXHOMA_YCSB_SF_DATA \
-sfo $BEXHOMA_YCSB_SF_OPS \
Expand All @@ -341,11 +370,12 @@ nohup python ycsb.py -ms 1 -tr \
-nlt 64 \
-nlf 10 \
-nbp 1,8 \
-nbt 64 \
-nbf 8 \
-nbt 48,56,64,72,80,88,96,104,112,120 \
-nbf 6,7,8,9,10,11,12,13,14 \
-ne 1 \
-nc 1 \
-m -mc \
-rst shared -rss 50Gi \
run </dev/null &>$LOG_DIR/test_ycsb_testcase_cn_3.log &


Expand All @@ -355,6 +385,7 @@ wait_process "ycsb"
BEXHOMA_YCSB_SF_DATA=1
BEXHOMA_YCSB_SF_OPS=16


### Fixed nodes
### Try small amount of data
### repeat for 1 driver and 8 drivers
Expand All @@ -368,13 +399,14 @@ nohup python ycsb.py -ms 1 -tr \
-tb 16384 \
-nlp 8 \
-nlt 64 \
-nlf 10 \
-nlf 12 \
-nbp 1,8 \
-nbt 64 \
-nbf 8 \
-nbf 12 \
-ne 1 \
-nc 1 \
-m -mc \
-rst shared -rss 10Gi \
run </dev/null &>$LOG_DIR/test_ycsb_testcase_cn_4.log &


Expand All @@ -398,13 +430,14 @@ nohup python ycsb.py -ms 1 -tr \
-tb 16384 \
-nlp 8 \
-nlt 64 \
-nlf 10 \
-nlf 12 \
-nbp 1,8 \
-nbt 64 \
-nbf 8 \
-nbf 12 \
-ne 1 \
-nc 1 \
-m -mc \
-rst shared -rss 200Gi \
run </dev/null &>$LOG_DIR/test_ycsb_testcase_cn_5.log &


Expand Down

0 comments on commit 727e901

Please sign in to comment.