Lava: Add standard deviation the benchmark plots
[lttng-ci.git] / scripts / lttng-baremetal-tests / generate-plots.py
index 6df689f82db7672bce28670058416ab5ebe10a1f..7311178c490378d9ac9d5c827930594cdbf11087 100644 (file)
@@ -27,28 +27,49 @@ from matplotlib.ticker import MaxNLocator
 from cycler import cycler
 
 def rename_cols(df):
-    new_cols = {'baseline_1thr_pereventmean': 'basel_1thr',
-            'baseline_2thr_pereventmean': 'basel_2thr',
-            'baseline_4thr_pereventmean': 'basel_4thr',
-            'baseline_8thr_pereventmean': 'basel_8thr',
-            'baseline_16thr_pereventmean': 'basel_16thr',
-            'lttng_1thr_pereventmean': 'lttng_1thr',
-            'lttng_2thr_pereventmean': 'lttng_2thr',
-            'lttng_4thr_pereventmean': 'lttng_4thr',
-            'lttng_8thr_pereventmean': 'lttng_8thr',
-            'lttng_16thr_pereventmean': 'lttng_16thr'
+    new_cols = {'baseline_1thr_peritermean': 'basel_1thr',
+            'baseline_2thr_peritermean': 'basel_2thr',
+            'baseline_4thr_peritermean': 'basel_4thr',
+            'baseline_8thr_peritermean': 'basel_8thr',
+            'baseline_16thr_peritermean': 'basel_16thr',
+            'lttng_1thr_peritermean': 'lttng_1thr',
+            'lttng_2thr_peritermean': 'lttng_2thr',
+            'lttng_4thr_peritermean': 'lttng_4thr',
+            'lttng_8thr_peritermean': 'lttng_8thr',
+            'lttng_16thr_peritermean': 'lttng_16thr',
+            'baseline_1thr_periterstdev': 'basel_1thr_stdev',
+            'baseline_2thr_periterstdev': 'basel_2thr_stdev',
+            'baseline_4thr_periterstdev': 'basel_4thr_stdev',
+            'baseline_8thr_periterstdev': 'basel_8thr_stdev',
+            'baseline_16thr_periterstdev': 'basel_16thr_stdev',
+            'lttng_1thr_periterstdev': 'lttng_1thr_stdev',
+            'lttng_2thr_periterstdev': 'lttng_2thr_stdev',
+            'lttng_4thr_periterstdev': 'lttng_4thr_stdev',
+            'lttng_8thr_periterstdev': 'lttng_8thr_stdev',
+            'lttng_16thr_periterstdev': 'lttng_16thr_stdev'
             }
     df.rename(columns=new_cols, inplace=True)
     return df
 
+def convert_us_to_ns(df):
+    cols = [col for col in df.columns if 'periter' in col]
+    df[cols] = df[cols].apply(lambda x: x*1000)
+    return df
+
 def create_plot(df, graph_type):
     # We split the data into two plots so it's easier to read
-    lower = ['basel_1thr', 'basel_2thr', 'basel_4thr', 'lttng_1thr', 'lttng_2thr', 'lttng_4thr']
+    lower = ['basel_{}thr'.format(s) for s in [1,2,4]]
+    lower += ['lttng_{}thr'.format(s) for s in [1,2,4]]
+
+    upper = ['basel_{}thr'.format(s) for s in [8, 16]]
+    upper += ['lttng_{}thr'.format(s) for s in [8, 16]]
+
+    lower_stdev = ['{}_stdev'.format(s) for s in lower]
+    upper_stdev = ['{}_stdev'.format(s) for s in upper]
+
     lower_color = ['lightcoral', 'gray', 'chartreuse', 'red', 'black', 'forestgreen']
-    upper = ['basel_8thr', 'basel_16thr', 'lttng_8thr', 'lttng_16thr']
     upper_color = ['deepskyblue', 'orange', 'mediumblue', 'saddlebrown']
 
-
     title='Meantime per syscalls for {} testcase'.format(graph_type)
 
     # Create a plot with 2 sub-plots
@@ -56,14 +77,20 @@ def create_plot(df, graph_type):
 
     f.suptitle(title, fontsize=18)
 
-    for (ax, sub, colors)  in zip(arrax, [lower, upper], [lower_color,upper_color]):
-        curr_df = df[sub]
+    for (ax, data_cols, stdev_cols, colors)  in zip(arrax, [lower, upper], [lower_stdev, upper_stdev], [lower_color,upper_color]):
+        curr_df = df[data_cols]
+
+        # set the color cycler for this plot
         ax.set_prop_cycle(cycler('color', colors))
-        ax.plot(curr_df, marker='o')
+
+        # Plot each line and its errorbars
+        for (data, stdev) in  zip(data_cols, stdev_cols):
+            ax.errorbar(x=df.index.values, y=df[data], yerr=df[stdev], marker='o')
+
         ax.set_ylim(0)
         ax.grid()
         ax.set_xlabel('Jenkins Build ID')
-        ax.set_ylabel('Meantime per syscall [ns]')
+        ax.set_ylabel('Meantime per syscall [us]')
         ax.legend(labels=curr_df.columns.values, bbox_to_anchor=(1.2,1))
         ax.xaxis.set_major_locator(MaxNLocator(integer=True))
 
@@ -106,6 +133,7 @@ def create_plots(res_dir):
             list_.append(tmp)
 
         df = pd.concat(list_)
+        df = convert_us_to_ns(df)
         df = rename_cols(df)
         df.sort_index(inplace=True)
 
This page took 0.027461 seconds and 4 git commands to generate.