From fd8f643a8f681e7a97009cb55f3eda6a40aca234 Mon Sep 17 00:00:00 2001 From: Jean-Gabriel Gill-Couture Date: Thu, 14 Aug 2025 10:37:30 -0400 Subject: [PATCH 1/5] feat: Add iobench project and python dashboard --- iobench/Cargo.toml | 15 ++ iobench/dash/README.md | 10 ++ iobench/dash/iobench-dash-v1.py | 109 ++++++++++++ iobench/dash/iobench-dash-v2.py | 149 ++++++++++++++++ iobench/dash/iobench-dash-v3.py | 175 ++++++++++++++++++ iobench/dash/iobench-dash-v4.py | 229 ++++++++++++++++++++++++ iobench/dash/requirements_freeze.txt | 29 +++ iobench/deployment.yaml | 41 +++++ iobench/src/main.rs | 253 +++++++++++++++++++++++++++ 9 files changed, 1010 insertions(+) create mode 100644 iobench/Cargo.toml create mode 100644 iobench/dash/README.md create mode 100644 iobench/dash/iobench-dash-v1.py create mode 100644 iobench/dash/iobench-dash-v2.py create mode 100644 iobench/dash/iobench-dash-v3.py create mode 100644 iobench/dash/iobench-dash-v4.py create mode 100644 iobench/dash/requirements_freeze.txt create mode 100644 iobench/deployment.yaml create mode 100644 iobench/src/main.rs diff --git a/iobench/Cargo.toml b/iobench/Cargo.toml new file mode 100644 index 0000000..ff6e06c --- /dev/null +++ b/iobench/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "iobench" +edition = "2024" +version = "1.0.0" + + +[dependencies] +clap = { version = "4.0", features = ["derive"] } +chrono = "0.4" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +csv = "1.1" +num_cpus = "1.13" + +[workspace] diff --git a/iobench/dash/README.md b/iobench/dash/README.md new file mode 100644 index 0000000..9f6f29b --- /dev/null +++ b/iobench/dash/README.md @@ -0,0 +1,10 @@ +This project was generated mostly by Gemini but it works so... :) + +## To run iobench dashboard + +```bash +virtualenv venv +source venv/bin/activate +pip install -r requirements_freeze.txt +python iobench-dash-v4.py +``` diff --git a/iobench/dash/iobench-dash-v1.py b/iobench/dash/iobench-dash-v1.py new file mode 100644 index 0000000..7a47620 --- /dev/null +++ b/iobench/dash/iobench-dash-v1.py @@ -0,0 +1,109 @@ +from dash import Dash, dcc, html, Input, Output +import plotly.graph_objects as go +import pandas as pd + +# Load the CSV data +df = pd.read_csv("iobench.csv") # Replace with the actual file path + +# Initialize Dash app +app = Dash(__name__) + +# Layout +app.layout = html.Div( + [ + html.H1("IOBench Results Viewer", style={"textAlign": "center"}), + + # Filters + html.Div( + [ + html.Label("Filter by Label:"), + dcc.Dropdown( + id="label-filter", + options=[{"label": label, "value": label} for label in df["label"].unique()], + value=df["label"].unique().tolist(), + multi=True, + ), + html.Label("Filter by Test Name:"), + dcc.Dropdown( + id="test-filter", + options=[{"label": test, "value": test} for test in df["test_name"].unique()], + value=df["test_name"].unique().tolist(), + multi=True, + ), + ], + style={"width": "25%", "display": "inline-block", "verticalAlign": "top", "padding": "10px"}, + ), + + # Graphs + html.Div( + [ + dcc.Graph(id="throughput-graph"), + dcc.Graph(id="latency-graph"), + ], + style={"width": "70%", "display": "inline-block", "padding": "10px"}, + ), + ] +) + +# Callbacks +@app.callback( + [Output("throughput-graph", "figure"), Output("latency-graph", "figure")], + [Input("label-filter", "value"), Input("test-filter", "value")], +) +def update_graphs(selected_labels, selected_tests): + # Filter data + filtered_df = df[df["label"].isin(selected_labels) & df["test_name"].isin(selected_tests)] + + # Throughput Graph + throughput_fig = go.Figure() + for label in filtered_df["label"].unique(): + subset = filtered_df[filtered_df["label"] == label] + throughput_fig.add_trace( + go.Bar( + x=subset["test_name"], + y=subset["iops"], + name=f"{label} - IOPS", + ) + ) + throughput_fig.add_trace( + go.Bar( + x=subset["test_name"], + y=subset["bandwidth_kibps"], + name=f"{label} - Bandwidth (KiB/s)", + ) + ) + throughput_fig.update_layout( + title="Throughput (IOPS and Bandwidth)", + xaxis_title="Test Name", + yaxis_title="Value", + barmode="group", + ) + + # Latency Graph + latency_fig = go.Figure() + for label in filtered_df["label"].unique(): + subset = filtered_df[filtered_df["label"] == label] + latency_fig.add_trace( + go.Scatter( + x=subset["test_name"], + y=subset["latency_mean_ms"], + mode="markers+lines", + name=f"{label} - Latency Mean (ms)", + error_y=dict( + type="data", + array=subset["latency_stddev_ms"], + visible=True, + ), + ) + ) + latency_fig.update_layout( + title="Latency with Standard Deviation", + xaxis_title="Test Name", + yaxis_title="Latency (ms)", + ) + + return throughput_fig, latency_fig + + +if __name__ == "__main__": + app.run_server(debug=True) diff --git a/iobench/dash/iobench-dash-v2.py b/iobench/dash/iobench-dash-v2.py new file mode 100644 index 0000000..7b28947 --- /dev/null +++ b/iobench/dash/iobench-dash-v2.py @@ -0,0 +1,149 @@ +import dash +from dash import dcc, html, Input, Output +import plotly.express as px +import pandas as pd +import dash_bootstrap_components as dbc +import io + +# --- Sample Data --- +# In a real-world scenario, you would load this from a CSV file. +# For this self-contained example, we define the data directly. +# Example: df = pd.read_csv('benchmark_data.csv') +csv_data = """ +config,op_type,iops,latency_ms,throughput_mbs +All-HDD,4k_random_read,260,60,1.02 +All-HDD,4k_random_write,100,150,0.39 +All-HDD,64k_sequential_read,2100,30,131.25 +All-HDD,64k_sequential_write,1500,42,93.75 +HDD+SSD_WAL,4k_random_read,270,58,1.05 +HDD+SSD_WAL,4k_random_write,160,100,0.62 +HDD+SSD_WAL,64k_sequential_read,2150,29,134.37 +HDD+SSD_WAL,64k_sequential_write,1800,35,112.5 +HDD+SSD_WAL_DB,4k_random_read,1250,12,4.88 +HDD+SSD_WAL_DB,4k_random_write,1550,10,6.05 +HDD+SSD_WAL_DB,64k_sequential_read,2200,28,137.5 +HDD+SSD_WAL_DB,64k_sequential_write,2000,32,125 +All-NVMe,4k_random_read,400000,0.1,1562.5 +All-NVMe,4k_random_write,350000,0.12,1367.18 +All-NVMe,64k_sequential_read,16000,4,1000 +All-NVMe,64k_sequential_write,12500,5,800 +""" + +# Read the data using pandas +df = pd.read_csv(io.StringIO(csv_data)) + +# Initialize the Dash app with a Bootstrap theme +app = dash.Dash(__name__, external_stylesheets=[dbc.themes.FLATLY]) + +# --- App Layout --- +app.layout = dbc.Container([ + # Header + dbc.Row([ + dbc.Col([ + html.H1("Ceph Cluster Benchmark Visualizer", className="text-primary"), + html.P( + "An interactive tool to compare performance metrics across different Ceph storage configurations.", + className="lead" + ) + ]) + ], className="my-4"), + + # Controls and Graphs Row + dbc.Row([ + # Control Panel Column + dbc.Col([ + dbc.Card([ + dbc.CardBody([ + html.H4("Control Panel", className="card-title"), + html.Hr(), + + # Metric Selection Radio Buttons + dbc.Label("Select Metric to Display:", html_for="metric-selector"), + dcc.RadioItems( + id='metric-selector', + options=[ + {'label': 'IOPS (Input/Output Operations Per Second)', 'value': 'iops'}, + {'label': 'Latency (in Milliseconds)', 'value': 'latency_ms'}, + {'label': 'Throughput (in MB/s)', 'value': 'throughput_mbs'} + ], + value='iops', # Default value + labelClassName="d-block" # Display labels as blocks + ), + html.Hr(), + + # Configuration Selection Checklist + dbc.Label("Select Configurations to Compare:", html_for="config-checklist"), + dcc.Checklist( + id='config-checklist', + options=[{'label': config, 'value': config} for config in df['config'].unique()], + value=df['config'].unique(), # Select all by default + labelClassName="d-block" + ), + ]) + ], className="mb-4") + ], width=12, lg=4), # Full width on small screens, 1/3 on large + + # Graph Display Column + dbc.Col([ + dcc.Graph(id='benchmark-graph') + ], width=12, lg=8) # Full width on small screens, 2/3 on large + ]) +], fluid=True) # Use a fluid container for full-width layout + + +# --- Callback Function --- +# This function connects the controls to the graph +@app.callback( + Output('benchmark-graph', 'figure'), + [Input('metric-selector', 'value'), + Input('config-checklist', 'value')] +) +def update_graph(selected_metric, selected_configs): + """ + This function is triggered whenever a control's value changes. + It filters the dataframe and returns an updated bar chart figure. + """ + if not selected_configs: + # If no configs are selected, return an empty figure to avoid errors + return go.Figure().update_layout( + title="Please select a configuration to view data.", + xaxis_title="", + yaxis_title="" + ) + + # Filter the DataFrame based on the selected configurations + filtered_df = df[df['config'].isin(selected_configs)] + + # Create the bar chart using Plotly Express + fig = px.bar( + filtered_df, + x='op_type', + y=selected_metric, + color='config', + barmode='group', # Group bars for different configs side-by-side + labels={ + "op_type": "Benchmark Operation Type", + "iops": "IOPS (Higher is Better)", + "latency_ms": "Latency in ms (Lower is Better)", + "throughput_mbs": "Throughput in MB/s (Higher is Better)", + "config": "Storage Configuration" + }, + title=f"Benchmark Comparison for: {selected_metric.replace('_', ' ').title()}", + height=600 # Set a fixed height for the graph + ) + + # Update layout for better readability + fig.update_layout( + xaxis_title="Operation Type", + yaxis_title=selected_metric.replace('_', ' ').title(), + legend_title="Configuration", + title_x=0.5, # Center the title + xaxis={'categoryorder':'total descending' if selected_metric != 'latency_ms' else 'total ascending'} + ) + + return fig + +# --- Run the App --- +if __name__ == '__main__': + # Use debug=True for development, allowing hot-reloading + app.run(debug=True) diff --git a/iobench/dash/iobench-dash-v3.py b/iobench/dash/iobench-dash-v3.py new file mode 100644 index 0000000..4c68712 --- /dev/null +++ b/iobench/dash/iobench-dash-v3.py @@ -0,0 +1,175 @@ +import dash +from dash import dcc, html, Input, Output +import plotly.express as px +import pandas as pd +import dash_bootstrap_components as dbc +import io +import plotly.graph_objects as go + +# --- Data Loading and Preparation --- +# 1. Use the exact iobench csv output format provided. +csv_data = """label,test_name,iops,bandwidth_kibps,latency_mean_ms,latency_stddev_ms +Ceph HDD Only,read-4k-sync-test,1474.302,5897,0.673,0.591 +Ceph HDD Only,write-4k-sync-test,14.126,56,27.074,7.046 +Ceph HDD Only,randread-4k-sync-test,225.140,900,4.436,6.918 +Ceph HDD Only,randwrite-4k-sync-test,13.129,52,34.891,10.859 +Ceph HDD Only,multiread-4k-sync-test,6873.675,27494,0.578,0.764 +Ceph HDD Only,multiwrite-4k-sync-test,57.135,228,38.660,11.293 +Ceph HDD Only,multirandread-4k-sync-test,2451.376,9805,1.626,2.515 +Ceph HDD Only,multirandwrite-4k-sync-test,54.642,218,33.492,13.111 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,read-4k-sync-test,1495.700,5982,0.664,1.701 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,write-4k-sync-test,16.990,67,17.502,9.908 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,randread-4k-sync-test,159.256,637,6.274,9.232 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,randwrite-4k-sync-test,16.693,66,24.094,16.099 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multiread-4k-sync-test,7305.559,29222,0.544,1.338 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multiwrite-4k-sync-test,52.260,209,34.891,17.576 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multirandread-4k-sync-test,700.606,2802,5.700,10.429 +Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multirandwrite-4k-sync-test,52.723,210,29.709,25.829 +Ceph 2 Hosts WAL+DB SSD Only,randwrite-4k-sync-test,90.037,360,3.617,8.321 +Ceph WAL+DB SSD During Rebuild,randwrite-4k-sync-test,41.008,164,10.138,19.333 +Ceph WAL+DB SSD OSD HDD,read-4k-sync-test,1520.299,6081,0.654,1.539 +Ceph WAL+DB SSD OSD HDD,write-4k-sync-test,78.528,314,4.074,9.101 +Ceph WAL+DB SSD OSD HDD,randread-4k-sync-test,153.303,613,6.518,9.036 +Ceph WAL+DB SSD OSD HDD,randwrite-4k-sync-test,48.677,194,8.785,20.356 +Ceph WAL+DB SSD OSD HDD,multiread-4k-sync-test,6804.880,27219,0.584,1.422 +Ceph WAL+DB SSD OSD HDD,multiwrite-4k-sync-test,311.513,1246,4.978,9.458 +Ceph WAL+DB SSD OSD HDD,multirandread-4k-sync-test,581.756,2327,6.869,10.204 +Ceph WAL+DB SSD OSD HDD,multirandwrite-4k-sync-test,120.556,482,13.463,25.440 +""" + +# Read the data and create a more user-friendly bandwidth column in MB/s +df = pd.read_csv(io.StringIO(csv_data)) +df['bandwidth_mbps'] = df['bandwidth_kibps'] / 1024 + +# --- App Initialization and Global Settings --- +app = dash.Dash(__name__, external_stylesheets=[dbc.themes.FLATLY]) + +# 3. Create a consistent color map for each unique label (cluster topology). +unique_labels = df['label'].unique() +color_map = {label: color for label, color in zip(unique_labels, px.colors.qualitative.Plotly)} + +# --- App Layout --- +app.layout = dbc.Container([ + # Header + dbc.Row([ + dbc.Col([ + html.H1("Ceph iobench Performance Dashboard", className="text-primary"), + html.P( + "Compare benchmark results across different Ceph cluster configurations and metrics.", + className="lead" + ) + ]) + ], className="my-4"), + + # Controls and Graphs Row + dbc.Row([ + # Control Panel Column + dbc.Col([ + dbc.Card([ + dbc.CardBody([ + html.H4("Control Panel", className="card-title"), + html.Hr(), + + # 2. Metric Selection Checklist to view multiple graphs + dbc.Label("Select Metrics to Display:", html_for="metric-checklist", className="fw-bold"), + dcc.Checklist( + id='metric-checklist', + options=[ + {'label': 'IOPS', 'value': 'iops'}, + {'label': 'Latency (ms)', 'value': 'latency_mean_ms'}, + {'label': 'Bandwidth (MB/s)', 'value': 'bandwidth_mbps'} + ], + value=['iops', 'latency_mean_ms'], # Default selection + labelClassName="d-block" + ), + html.Hr(), + + # Configuration Selection Checklist + dbc.Label("Select Configurations to Compare:", html_for="config-checklist", className="fw-bold"), + dcc.Checklist( + id='config-checklist', + options=[{'label': label, 'value': label} for label in unique_labels], + value=unique_labels, # Select all by default + labelClassName="d-block" + ), + ]) + ], className="mb-4") + ], width=12, lg=4), + + # Graph Display Column - This will be populated by the callback + dbc.Col(id='graph-container', width=12, lg=8) + ]) +], fluid=True) + + +# --- Callback Function --- +@app.callback( + Output('graph-container', 'children'), + [Input('metric-checklist', 'value'), + Input('config-checklist', 'value')] +) +def update_graphs(selected_metrics, selected_configs): + """ + This function is triggered when a control's value changes. + It generates and returns a list of graphs based on user selections. + """ + # Handle cases where no selection is made to prevent errors + if not selected_metrics or not selected_configs: + return dbc.Alert("Please select at least one metric and one configuration to view data.", color="info") + + # Filter the DataFrame based on the selected configurations + filtered_df = df[df['label'].isin(selected_configs)] + + # Create a list to hold all the graph components + graph_list = [] + + # Define user-friendly titles for graphs + metric_titles = { + 'iops': 'IOPS Comparison (Higher is Better)', + 'latency_mean_ms': 'Mean Latency (ms) Comparison (Lower is Better)', + 'bandwidth_mbps': 'Bandwidth (MB/s) Comparison (Higher is Better)' + } + + # Loop through each selected metric and create a graph for it + for metric in selected_metrics: + # Determine if sorting should be ascending (for latency) or descending + sort_order = 'total ascending' if metric == 'latency_mean_ms' else 'total descending' + + # Special handling for latency to include error bars for standard deviation + error_y_param = 'latency_stddev_ms' if metric == 'latency_mean_ms' else None + + fig = px.bar( + filtered_df, + x='test_name', + y=metric, + color='label', + barmode='group', + color_discrete_map=color_map, # 3. Apply the consistent color map + error_y=error_y_param, # Adds error bars for latency stddev + title=metric_titles.get(metric, metric), + labels={ + "test_name": "Benchmark Test Name", + "iops": "IOPS", + "latency_mean_ms": "Mean Latency (ms)", + "bandwidth_mbps": "Bandwidth (MB/s)", + "label": "Cluster Configuration" + } + ) + + fig.update_layout( + height=500, + xaxis_title=None, # Clean up x-axis title + legend_title="Configuration", + title_x=0.5, # Center the title + xaxis={'categoryorder': sort_order}, + xaxis_tickangle=-45 # Angle labels to prevent overlap + ) + + # Add the generated graph to our list, wrapped in a column for layout + graph_list.append(dbc.Row(dbc.Col(dcc.Graph(figure=fig)), className="mb-4")) + + return graph_list + +# --- Run the App --- +if __name__ == '__main__': + app.run(debug=True) diff --git a/iobench/dash/iobench-dash-v4.py b/iobench/dash/iobench-dash-v4.py new file mode 100644 index 0000000..ae896b4 --- /dev/null +++ b/iobench/dash/iobench-dash-v4.py @@ -0,0 +1,229 @@ +import dash +from dash import dcc, html, Input, Output, State, clientside_callback, ClientsideFunction +import plotly.express as px +import pandas as pd +import dash_bootstrap_components as dbc +import io + +# --- Data Loading and Preparation --- +# csv_data = """label,test_name,iops,bandwidth_kibps,latency_mean_ms,latency_stddev_ms +# Ceph HDD Only,read-4k-sync-test,1474.302,5897,0.673,0.591 +# Ceph HDD Only,write-4k-sync-test,14.126,56,27.074,7.046 +# Ceph HDD Only,randread-4k-sync-test,225.140,900,4.436,6.918 +# Ceph HDD Only,randwrite-4k-sync-test,13.129,52,34.891,10.859 +# Ceph HDD Only,multiread-4k-sync-test,6873.675,27494,0.578,0.764 +# Ceph HDD Only,multiwrite-4k-sync-test,57.135,228,38.660,11.293 +# Ceph HDD Only,multirandread-4k-sync-test,2451.376,9805,1.626,2.515 +# Ceph HDD Only,multirandwrite-4k-sync-test,54.642,218,33.492,13.111 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,read-4k-sync-test,1495.700,5982,0.664,1.701 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,write-4k-sync-test,16.990,67,17.502,9.908 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,randread-4k-sync-test,159.256,637,6.274,9.232 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,randwrite-4k-sync-test,16.693,66,24.094,16.099 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multiread-4k-sync-test,7305.559,29222,0.544,1.338 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multiwrite-4k-sync-test,52.260,209,34.891,17.576 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multirandread-4k-sync-test,700.606,2802,5.700,10.429 +# Ceph 2 Hosts WAL+DB SSD and 1 Host HDD,multirandwrite-4k-sync-test,52.723,210,29.709,25.829 +# Ceph 2 Hosts WAL+DB SSD Only,randwrite-4k-sync-test,90.037,360,3.617,8.321 +# Ceph WAL+DB SSD During Rebuild,randwrite-4k-sync-test,41.008,164,10.138,19.333 +# Ceph WAL+DB SSD OSD HDD,read-4k-sync-test,1520.299,6081,0.654,1.539 +# Ceph WAL+DB SSD OSD HDD,write-4k-sync-test,78.528,314,4.074,9.101 +# Ceph WAL+DB SSD OSD HDD,randread-4k-sync-test,153.303,613,6.518,9.036 +# Ceph WAL+DB SSD OSD HDD,randwrite-4k-sync-test,48.677,194,8.785,20.356 +# Ceph WAL+DB SSD OSD HDD,multiread-4k-sync-test,6804.880,27219,0.584,1.422 +# Ceph WAL+DB SSD OSD HDD,multiwrite-4k-sync-test,311.513,1246,4.978,9.458 +# Ceph WAL+DB SSD OSD HDD,multirandread-4k-sync-test,581.756,2327,6.869,10.204 +# Ceph WAL+DB SSD OSD HDD,multirandwrite-4k-sync-test,120.556,482,13.463,25.440 +# """ +# +# df = pd.read_csv(io.StringIO(csv_data)) +df = pd.read_csv("iobench.csv") # Replace with the actual file path +df['bandwidth_mbps'] = df['bandwidth_kibps'] / 1024 + +# --- App Initialization and Global Settings --- +app = dash.Dash(__name__, external_stylesheets=[dbc.themes.FLATLY]) + +# Create master lists of options for checklists +unique_labels = sorted(df['label'].unique()) +unique_tests = sorted(df['test_name'].unique()) + +# Create a consistent color map for each unique label +color_map = {label: color for label, color in zip(unique_labels, px.colors.qualitative.Plotly)} + +# --- App Layout --- +app.layout = dbc.Container([ + # Header + dbc.Row(dbc.Col(html.H1("Ceph iobench Performance Dashboard", className="text-primary"),), className="my-4 text-center"), + + # Controls and Graphs Row + dbc.Row([ + # Control Panel Column + dbc.Col([ + dbc.Card([ + dbc.CardBody([ + html.H4("Control Panel", className="card-title"), + html.Hr(), + + # Metric Selection + dbc.Label("1. Select Metrics to Display:", html_for="metric-checklist", className="fw-bold"), + dcc.Checklist( + id='metric-checklist', + options=[ + {'label': 'IOPS', 'value': 'iops'}, + {'label': 'Latency (ms)', 'value': 'latency_mean_ms'}, + {'label': 'Bandwidth (MB/s)', 'value': 'bandwidth_mbps'} + ], + value=['iops', 'latency_mean_ms', 'bandwidth_mbps'], # Default selection + labelClassName="d-block" + ), + html.Hr(), + + # Configuration Selection + dbc.Label("2. Select Configurations:", html_for="config-checklist", className="fw-bold"), + dbc.ButtonGroup([ + dbc.Button("All", id="config-select-all", n_clicks=0, color="primary", outline=True, size="sm"), + dbc.Button("None", id="config-select-none", n_clicks=0, color="primary", outline=True, size="sm"), + ], className="mb-2"), + dcc.Checklist( + id='config-checklist', + options=[{'label': label, 'value': label} for label in unique_labels], + value=unique_labels, # Select all by default + labelClassName="d-block" + ), + html.Hr(), + + # Test Name Selection + dbc.Label("3. Select Tests:", html_for="test-checklist", className="fw-bold"), + dbc.ButtonGroup([ + dbc.Button("All", id="test-select-all", n_clicks=0, color="primary", outline=True, size="sm"), + dbc.Button("None", id="test-select-none", n_clicks=0, color="primary", outline=True, size="sm"), + ], className="mb-2"), + dcc.Checklist( + id='test-checklist', + options=[{'label': test, 'value': test} for test in unique_tests], + value=unique_tests, # Select all by default + labelClassName="d-block" + ), + ]) + ], className="mb-4") + ], width=12, lg=4), + + # Graph Display Column + dbc.Col(id='graph-container', width=12, lg=8) + ]) +], fluid=True) + + +# --- Callbacks --- + +# Callback to handle "Select All" / "Select None" for configurations +@app.callback( + Output('config-checklist', 'value'), + Input('config-select-all', 'n_clicks'), + Input('config-select-none', 'n_clicks'), + prevent_initial_call=True +) +def select_all_none_configs(all_clicks, none_clicks): + ctx = dash.callback_context + if not ctx.triggered: + return dash.no_update + + button_id = ctx.triggered[0]['prop_id'].split('.')[0] + if button_id == 'config-select-all': + return unique_labels + elif button_id == 'config-select-none': + return [] + return dash.no_update + +# Callback to handle "Select All" / "Select None" for tests +@app.callback( + Output('test-checklist', 'value'), + Input('test-select-all', 'n_clicks'), + Input('test-select-none', 'n_clicks'), + prevent_initial_call=True +) +def select_all_none_tests(all_clicks, none_clicks): + ctx = dash.callback_context + if not ctx.triggered: + return dash.no_update + + button_id = ctx.triggered[0]['prop_id'].split('.')[0] + if button_id == 'test-select-all': + return unique_tests + elif button_id == 'test-select-none': + return [] + return dash.no_update + + +# Main callback to update graphs based on all selections +@app.callback( + Output('graph-container', 'children'), + [Input('metric-checklist', 'value'), + Input('config-checklist', 'value'), + Input('test-checklist', 'value')] +) +def update_graphs(selected_metrics, selected_configs, selected_tests): + """ + This function is triggered when any control's value changes. + It generates and returns a list of graphs based on all user selections. + """ + # Handle cases where no selection is made to prevent errors and show a helpful message + if not all([selected_metrics, selected_configs, selected_tests]): + return dbc.Alert( + "Please select at least one item from each category (Metric, Configuration, and Test) to view data.", + color="info", + className="mt-4" + ) + + # Filter the DataFrame based on all selected criteria + filtered_df = df[df['label'].isin(selected_configs) & df['test_name'].isin(selected_tests)] + + # If the filtered data is empty after selection, inform the user + if filtered_df.empty: + return dbc.Alert("No data available for the current selection.", color="warning", className="mt-4") + + graph_list = [] + metric_titles = { + 'iops': 'IOPS Comparison (Higher is Better)', + 'latency_mean_ms': 'Mean Latency (ms) Comparison (Lower is Better)', + 'bandwidth_mbps': 'Bandwidth (MB/s) Comparison (Higher is Better)' + } + + for metric in selected_metrics: + sort_order = 'total ascending' if metric == 'latency_mean_ms' else 'total descending' + error_y_param = 'latency_stddev_ms' if metric == 'latency_mean_ms' else None + + fig = px.bar( + filtered_df, + x='test_name', + y=metric, + color='label', + barmode='group', + color_discrete_map=color_map, + error_y=error_y_param, + title=metric_titles.get(metric, metric), + labels={ + "test_name": "Benchmark Test Name", + "iops": "IOPS", + "latency_mean_ms": "Mean Latency (ms)", + "bandwidth_mbps": "Bandwidth (MB/s)", + "label": "Cluster Configuration" + } + ) + + fig.update_layout( + height=500, + xaxis_title=None, + legend_title="Configuration", + title_x=0.5, + xaxis={'categoryorder': sort_order}, + xaxis_tickangle=-45, + margin=dict(b=120) # Add bottom margin to prevent tick labels from being cut off + ) + + graph_list.append(dbc.Row(dbc.Col(dcc.Graph(figure=fig)), className="mb-4")) + + return graph_list + +# --- Run the App --- +if __name__ == '__main__': + app.run(debug=True) diff --git a/iobench/dash/requirements_freeze.txt b/iobench/dash/requirements_freeze.txt new file mode 100644 index 0000000..b898eb2 --- /dev/null +++ b/iobench/dash/requirements_freeze.txt @@ -0,0 +1,29 @@ +blinker==1.9.0 +certifi==2025.7.14 +charset-normalizer==3.4.2 +click==8.2.1 +dash==3.2.0 +dash-bootstrap-components==2.0.3 +Flask==3.1.1 +idna==3.10 +importlib_metadata==8.7.0 +itsdangerous==2.2.0 +Jinja2==3.1.6 +MarkupSafe==3.0.2 +narwhals==2.0.1 +nest-asyncio==1.6.0 +numpy==2.3.2 +packaging==25.0 +pandas==2.3.1 +plotly==6.2.0 +python-dateutil==2.9.0.post0 +pytz==2025.2 +requests==2.32.4 +retrying==1.4.1 +setuptools==80.9.0 +six==1.17.0 +typing_extensions==4.14.1 +tzdata==2025.2 +urllib3==2.5.0 +Werkzeug==3.1.3 +zipp==3.23.0 diff --git a/iobench/deployment.yaml b/iobench/deployment.yaml new file mode 100644 index 0000000..956b52a --- /dev/null +++ b/iobench/deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: iobench + labels: + app: iobench +spec: + replicas: 1 + selector: + matchLabels: + app: iobench + template: + metadata: + labels: + app: iobench + spec: + containers: + - name: fio + image: juicedata/fio:latest # Replace with your preferred fio image + imagePullPolicy: IfNotPresent + command: [ "sleep", "infinity" ] # Keeps the container running for kubectl exec + volumeMounts: + - name: iobench-pvc + mountPath: /data # Mount the PVC at /data + volumes: + - name: iobench-pvc + persistentVolumeClaim: + claimName: iobench-pvc # Matches your PVC name +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: iobench-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + storageClassName: ceph-block + diff --git a/iobench/src/main.rs b/iobench/src/main.rs new file mode 100644 index 0000000..9429ed0 --- /dev/null +++ b/iobench/src/main.rs @@ -0,0 +1,253 @@ +use std::fs; +use std::io::{self, Write}; +use std::process::{Command, Stdio}; +use std::thread; +use std::time::Duration; + +use chrono::Local; +use clap::Parser; +use serde::{Deserialize, Serialize}; + +/// A simple yet powerful I/O benchmarking tool using fio. +#[derive(Parser, Debug)] +#[command(author, version, about, long_about = None)] +struct Args { + /// Target for the benchmark. + /// Formats: + /// - localhost (default) + /// - ssh/{user}@{host} + /// - ssh/{user}@{host}:{port} + /// - k8s/{namespace}/{pod} + #[arg(short, long, default_value = "localhost")] + target: String, + + #[arg(short, long, default_value = ".")] + benchmark_dir: String, + + /// Comma-separated list of tests to run. + /// Available tests: read, write, randread, randwrite, + /// multiread, multiwrite, multirandread, multirandwrite. + #[arg(long, default_value = "read,write,randread,randwrite,multiread,multiwrite,multirandread,multirandwrite")] + tests: String, + + /// Duration of each test in seconds. + #[arg(long, default_value_t = 15)] + duration: u64, + + /// Output directory for results. + /// Defaults to ./iobench-{current_datetime}. + #[arg(long)] + output_dir: Option, + + /// The size of the test file for fio. + #[arg(long, default_value = "1G")] + size: String, + + /// The block size for I/O operations. + #[arg(long, default_value = "4k")] + block_size: String, +} + +#[derive(Debug, Serialize, Deserialize)] +struct FioOutput { + jobs: Vec, +} + +#[derive(Debug, Serialize, Deserialize)] +struct FioJobResult { + jobname: String, + read: FioMetrics, + write: FioMetrics, +} + +#[derive(Debug, Serialize, Deserialize)] +struct FioMetrics { + bw: f64, + iops: f64, + clat_ns: LatencyMetrics, +} + +#[derive(Debug, Serialize, Deserialize)] +struct LatencyMetrics { + mean: f64, + stddev: f64, +} + +#[derive(Debug, Serialize)] +struct BenchmarkResult { + test_name: String, + iops: f64, + bandwidth_kibps: f64, + latency_mean_ms: f64, + latency_stddev_ms: f64, +} + +fn main() -> io::Result<()> { + let args = Args::parse(); + + let output_dir = args.output_dir.unwrap_or_else(|| { + format!("./iobench-{}", Local::now().format("%Y-%m-%d-%H%M%S")) + }); + fs::create_dir_all(&output_dir)?; + + let tests_to_run: Vec<&str> = args.tests.split(',').collect(); + let mut results = Vec::new(); + + for test in tests_to_run { + println!("--------------------------------------------------"); + println!("Running test: {}", test); + + let (rw, numjobs) = match test { + "read" => ("read", 1), + "write" => ("write", 1), + "randread" => ("randread", 1), + "randwrite" => ("randwrite", 1), + "multiread" => ("read", 4), + "multiwrite" => ("write", 4), + "multirandread" => ("randread", 4), + "multirandwrite" => ("randwrite", 4), + _ => { + eprintln!("Unknown test: {}. Skipping.", test); + continue; + } + }; + + let test_name = format!("{}-{}-sync-test", test, args.block_size); + let fio_command = format!( + "fio --filename={}/iobench_testfile --direct=1 --fsync=1 --rw={} --bs={} --numjobs={} --iodepth=1 --runtime={} --time_based --group_reporting --name={} --size={} --output-format=json", + args.benchmark_dir, rw, args.block_size, numjobs, args.duration, test_name, args.size + ); + + println!("Executing command:\n{}\n", fio_command); + + let output = match run_command(&args.target, &fio_command) { + Ok(out) => out, + Err(e) => { + eprintln!("Failed to execute command for test {}: {}", test, e); + continue; + } + }; + + + let result = parse_fio_output(&output, &test_name, rw); + // TODO store raw fio output and print it + match result { + Ok(res) => { + results.push(res); + } + Err(e) => { + eprintln!("Error parsing fio output for test {}: {}", test, e); + eprintln!("Raw output:\n{}", output); + } + } + + println!("{output}"); + println!("Test {} completed.", test); + // A brief pause to let the system settle before the next test. + thread::sleep(Duration::from_secs(2)); + } + + // Cleanup the test file on the target + println!("--------------------------------------------------"); + println!("Cleaning up test file on target..."); + let cleanup_command = "rm -f ./iobench_testfile"; + if let Err(e) = run_command(&args.target, cleanup_command) { + eprintln!("Warning: Failed to clean up test file on target: {}", e); + } else { + println!("Cleanup successful."); + } + + + if results.is_empty() { + println!("\nNo benchmark results to display."); + return Ok(()); + } + + // Output results to a CSV file for easy analysis + let csv_path = format!("{}/summary.csv", output_dir); + let mut wtr = csv::Writer::from_path(&csv_path)?; + for result in &results { + wtr.serialize(result)?; + } + wtr.flush()?; + + println!("\nBenchmark summary saved to {}", csv_path); + println!("\n--- Benchmark Results Summary ---"); + println!("{:<25} {:>10} {:>18} {:>20} {:>22}", "Test Name", "IOPS", "Bandwidth (KiB/s)", "Latency Mean (ms)", "Latency StdDev (ms)"); + println!("{:-<98}", ""); + for result in results { + println!("{:<25} {:>10.2} {:>18.2} {:>20.4} {:>22.4}", result.test_name, result.iops, result.bandwidth_kibps, result.latency_mean_ms, result.latency_stddev_ms); + } + + Ok(()) +} + +fn run_command(target: &str, command: &str) -> io::Result { + let (program, args) = if target == "localhost" { + ("sudo", vec!["sh".to_string(), "-c".to_string(), command.to_string()]) + } else if target.starts_with("ssh/") { + let target_str = target.strip_prefix("ssh/").unwrap(); + let ssh_target; + let mut ssh_args = vec!["-o".to_string(), "StrictHostKeyChecking=no".to_string()]; + let port_parts: Vec<&str> = target_str.split(':').collect(); + if port_parts.len() == 2 { + ssh_target = port_parts[0].to_string(); + ssh_args.push("-p".to_string()); + ssh_args.push(port_parts[1].to_string()); + } else { + ssh_target = target_str.to_string(); + } + ssh_args.push(ssh_target); + ssh_args.push(format!("sudo sh -c '{}'", command)); + ("ssh", ssh_args) + } else if target.starts_with("k8s/") { + let parts: Vec<&str> = target.strip_prefix("k8s/").unwrap().split('/').collect(); + if parts.len() != 2 { + return Err(io::Error::new(io::ErrorKind::InvalidInput, "Invalid k8s target format. Expected k8s/{namespace}/{pod}")); + } + let namespace = parts[0]; + let pod = parts[1]; + ("kubectl", vec!["exec".to_string(), "-n".to_string(), namespace.to_string(), pod.to_string(), "--".to_string(), "sh".to_string(), "-c".to_string(), command.to_string()]) + } else { + return Err(io::Error::new(io::ErrorKind::InvalidInput, "Invalid target format")); + }; + + let mut cmd = Command::new(program); + cmd.args(&args); + cmd.stdout(Stdio::piped()).stderr(Stdio::piped()); + + let child = cmd.spawn()?; + let output = child.wait_with_output()?; + + if !output.status.success() { + eprintln!("Command failed with status: {}", output.status); + io::stderr().write_all(&output.stderr)?; + return Err(io::Error::new(io::ErrorKind::Other, "Command execution failed")); + } + + String::from_utf8(output.stdout) + .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e)) +} + +fn parse_fio_output(output: &str, test_name: &str, rw: &str) -> Result { + let fio_data: FioOutput = serde_json::from_str(output) + .map_err(|e| format!("Failed to deserialize fio JSON: {}", e))?; + + let job_result = fio_data.jobs.iter() + .find(|j| j.jobname == test_name) + .ok_or_else(|| format!("Could not find job result for '{}' in fio output", test_name))?; + + let metrics = if rw.contains("read") { + &job_result.read + } else { + &job_result.write + }; + + Ok(BenchmarkResult { + test_name: test_name.to_string(), + iops: metrics.iops, + bandwidth_kibps: metrics.bw, + latency_mean_ms: metrics.clat_ns.mean / 1_000_000.0, + latency_stddev_ms: metrics.clat_ns.stddev / 1_000_000.0, + }) +} From 2a6a233fb2684cd289fdfc0ec4442eb112783bb6 Mon Sep 17 00:00:00 2001 From: Jean-Gabriel Gill-Couture Date: Fri, 15 Aug 2025 14:40:39 -0400 Subject: [PATCH 2/5] feat: WIP add secrets module and macro crate --- Cargo.lock | 58 ++-- Cargo.toml | 1 + harmony/Cargo.toml | 1 + harmony/harmony.rlib | Bin 0 -> 11168720 bytes harmony/src/domain/mod.rs | 1 + harmony/src/domain/secrets/mod.rs | 265 ++++++++++++++++++ harmony/src/infra/opnsense/mod.rs | 6 + harmony/src/modules/tenant/credentials.rs.bak | 51 ++++ harmony_secrets_derive/Cargo.toml | 13 + harmony_secrets_derive/src/lib.rs | 152 ++++++++++ harmony_secrets_derive/src/lib.rsglm45 | 100 +++++++ 11 files changed, 629 insertions(+), 19 deletions(-) create mode 100644 harmony/harmony.rlib create mode 100644 harmony/src/domain/secrets/mod.rs create mode 100644 harmony/src/modules/tenant/credentials.rs.bak create mode 100644 harmony_secrets_derive/Cargo.toml create mode 100644 harmony_secrets_derive/src/lib.rs create mode 100644 harmony_secrets_derive/src/lib.rsglm45 diff --git a/Cargo.lock b/Cargo.lock index 71a1a70..d8e8d27 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -378,7 +378,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 2.0.12", + "thiserror 2.0.14", "tokio", "tokio-util", "tower-service", @@ -473,7 +473,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] @@ -1823,12 +1823,23 @@ dependencies = [ "temp-dir", "temp-file", "tempfile", + "thiserror 2.0.14", "tokio", "tokio-util", "url", "uuid", ] +[[package]] +name = "harmony-secrets-derive" +version = "0.1.0" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "harmony_cli" version = "0.1.0" @@ -1962,7 +1973,7 @@ dependencies = [ "non-blank-string-rs", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] @@ -2621,7 +2632,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] @@ -2722,7 +2733,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror 2.0.12", + "thiserror 2.0.14", "tokio", "tokio-tungstenite", "tokio-util", @@ -2747,7 +2758,7 @@ dependencies = [ "serde", "serde-value", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] @@ -2785,7 +2796,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.14", "tokio", "tokio-util", "tracing", @@ -3366,7 +3377,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror 2.0.14", "ucd-trie", ] @@ -3587,6 +3598,15 @@ dependencies = [ "elliptic-curve", ] +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + [[package]] name = "proc-macro2" version = "1.0.95" @@ -3720,7 +3740,7 @@ checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] @@ -4016,7 +4036,7 @@ dependencies = [ "flurry", "log", "serde", - "thiserror 2.0.12", + "thiserror 2.0.14", "tokio", "tokio-util", ] @@ -4579,7 +4599,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.12", + "thiserror 2.0.14", "time", ] @@ -4763,9 +4783,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.104" +version = "2.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "7bc3fcb250e53458e712715cf74285c1f889686520d79294a9ef3bd7aa1fc619" dependencies = [ "proc-macro2", "quote", @@ -4899,11 +4919,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.14", ] [[package]] @@ -4919,9 +4939,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" dependencies = [ "proc-macro2", "quote", @@ -5251,7 +5271,7 @@ dependencies = [ "log", "rand 0.9.1", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.14", "utf-8", ] diff --git a/Cargo.toml b/Cargo.toml index 22645f3..3ead724 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,7 @@ members = [ "harmony_cli", "k3d", "harmony_composer", + "harmony_secrets_derive", ] [workspace.package] diff --git a/harmony/Cargo.toml b/harmony/Cargo.toml index 5a42cf7..b46ce33 100644 --- a/harmony/Cargo.toml +++ b/harmony/Cargo.toml @@ -67,6 +67,7 @@ bollard.workspace = true tar.workspace = true base64.workspace = true once_cell = "1.21.3" +thiserror = "2.0.14" [dev-dependencies] pretty_assertions.workspace = true diff --git a/harmony/harmony.rlib b/harmony/harmony.rlib new file mode 100644 index 0000000000000000000000000000000000000000..feb8a055dbea21e0f350d964440a27c4192c92f0 GIT binary patch literal 11168720 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

y|_v8X?N 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