• Remarks:

    • With current code impossible to do vm count scan test
  • TODO next

    • unit tests for math functions
    • CEPH PERFORMANCE COUNTERS
    • Sync storage_structure
    • fix fio job summary
    • Use disk max QD as qd limit?
    • Cumulative statistic table for all jobs
    • Add column for job params, which show how many cluster resource consumed
    • show extra outliers with arrows
    • More X = func(QD) plots. Eg. - kurt/skew, etc.
    • Hide cluster load if no nodes available
    • Show latency skew and curtosis
    • Sort engineering report by result tuple
    • Name engineering reports by long summary
    • Latency heatmap and violin aren't consistent
    • profile violint plot
    • Fix plot layout, there to much unused space around typical plot
    • iops boxplot as function from QD
    • collect device types mapping from nodes - device should be block/net/...
    • Optimize sensor communication with ceph, can run fist OSD request for data validation only on start.
    • Update Storage test, add tests for stat and plot module
    • Aggregated sensors boxplot
    • Hitmap for aggregated sensors
    • automatically find what to plot from storage data (but also allow to select via config)

Have to think: * Each sensor should collect only one portion of data. During start it should scan all available sources and tell upper code to create separated funcs for them. * store statistic results in storage * During prefill check io on file * Store percentiles levels in TS, separate 1D TS and 2D TS to different classes, store levels in 2D TS * weight average and deviation * C++/Go disk stat sensors to measure IOPS/Lat on milliseconds