Commit Graph

61 Commits

Author SHA1 Message Date
47e32bb6b1 remove response caching
Turn out, that caching on the client side does not play well when new
data is loaded into the system.
2018-05-10 17:52:13 +02:00
bda2de672e improvements
- split the 'sortby' select field into two fields
- sort by average
- legend shows plotted and total values in the date range
- removed InlineDataSeries, because it was not used anymore
2018-05-01 17:32:25 +02:00
6d85c56cb0 range definitions for the y-axis
Sometimes it is useful to specify the certain y-axis range. For example
when you are only interested in the values that take longer than a
threshold. Or when you want to exclude some outliers. When you want to
compare plots in a gallery, it is very handy when all plots have the
same data-area.
2018-05-01 10:18:06 +02:00
54ee23459d remove obsolete method 2018-05-01 10:14:17 +02:00
fc64c55ce7 remove percentile plot
Eventually we want to only support what is now called aggregate, but
not have to implement different plot types. So instead of supporting
percentile plots for dashboards I removed them. You can still get
percentile plots together with the scatter plot.
2018-05-01 08:27:37 +02:00
bfcbd0a451 draw better dashboard images
Scaling big plots to small thumbnails results in bad images that barely
show any details.
We solve this by calling gnuplot a second time to generate the
thumbnails. They don't have any labels and are rendered in the required
size, so that not scaling is necessary.
Thumbnails have to be requested explicitly, because it can be expensive
to compute them.
2018-05-01 07:54:10 +02:00
2903b5a828 enable client side caching for plot requests
Doesn't work perfectly yet, because the height/width sometimes changes
by one or two pixels.
2018-04-29 19:16:13 +02:00
024c14435c remove old temp files 2018-04-29 19:14:43 +02:00
2da54432ff sort tiles on the dashboard 2018-04-28 19:03:07 +02:00
913057c6df add dashboard 2018-04-27 19:36:31 +02:00
7018a11ab3 add links to current settings and to current image 2018-04-10 19:59:09 +02:00
1755562a84 do not move the cursor to the end when applying a proposal 2018-04-08 14:06:13 +02:00
68ee88bce0 rewrite autocomplete in vue.js 2018-04-08 08:44:28 +02:00
5e53e667fe use vue.js for the UI 2018-04-02 09:18:41 +02:00
22c99f8517 fix null pointer exception
filename were generated without '$', but the parsing code expected
the '$'.
2018-03-28 19:34:48 +02:00
81711d551f fix performance regression
The last improvement of memory usage introduced a performance
regression. The ingestion performance dropped by 50%-80%, because
for every inserted entry the Tags were created inefficient.
2018-03-27 19:30:18 +02:00
5343c0d427 reduce memory usage
Reduce memory usage by storing the filename as string instead of
individual tags.
2018-03-19 19:21:57 +01:00
ahr
181fce805d do not run a gc after creating a plot
the gc often takes a second or more, which slows down the rendering a
lot
2018-03-11 16:25:52 +01:00
ahr
caf400343e remove time measurements
For each entry we executed two calls to System.nanoTime().
The resulting numbers aren't very reliable and calling nanoTime
that often (160k - 300k per second) is quite expensive.
2018-03-09 08:46:09 +01:00
ahr
5a9aae70af handle corrupt json
Entries must be separated by a newline. This allows
us to handle corrupt json entries, because we know
that entries only start at a line beginning.
2018-03-03 09:58:50 +01:00
8f15aba0d5 replace individual percentile aggregates with a single one for all 2018-01-21 10:54:13 +01:00
ahr
cc70f45c12 add different plot types
Step 1: 
Added PlotType enum and a drop down to the UI.
Extracted the code for scatter plots.
2017-12-29 08:57:34 +01:00
ahr
d63fabc85d prevent parallel plot requests
Plotting can take a long time and use a lot of resources. 
Multiple plot requests can cause the machine to run OOM.

We are now allowing plots for 500k files again. This is mainly to
prevent unwanted plots of everything.
2017-12-15 17:20:12 +01:00
a6a2236d18 do not compute counts when proposing all keys 2017-11-18 13:03:45 +01:00
14d1367c4a remove duplicate enums 2017-11-18 12:30:45 +01:00
995558588a add median and 90% percentile 2017-11-18 09:28:41 +01:00
ahr
64db4c48a2 add plots for percentiles 2017-11-06 16:57:22 +01:00
ahr
92dde94443 preparation to add plots for percentiles 2017-11-05 09:21:34 +01:00
ahr
27db9f934d increase entry buffer 2017-11-05 08:52:10 +01:00
386f211377 make it possible to draw the legend outside of the plot area 2017-09-30 17:51:33 +02:00
e0655f66fa skip invalid entries 2017-09-24 17:21:20 +02:00
70e586b7e9 limit by max/min value 2017-09-23 18:56:02 +02:00
79d860cee7 make computation of mean value optional 2017-09-23 12:42:22 +02:00
b7dc22275d trigger garbage collection periodically
This reduces the memory usage, because the old generation can be made
smaller and we don't have to wait until max heap usage has been reached.
2017-09-23 10:54:28 +02:00
9e3dd27eb0 use a default date of seven days ago instead of last year 2017-09-23 10:52:33 +02:00
a99f6a276e fix missing/wrong logging
1. Log the exception in PdbFileIterator with a logger instead
   of just printing it to stderr.
2. Increase log level for exceptions when inserting entries.
3. Log exception when creation of entry failed in TcpIngestor.
2017-04-17 18:27:25 +02:00
44f30aafee add a new facade in front of DataStore
This is done in preparation for the proposal API.
In order to compute proposals we need to consume the
API of the DataStore, but the code does not need to
be in the DataStore. 
Extracting the API allows us to separate these concerns.
2017-04-16 10:11:46 +02:00
ac1ee20046 replace ludb with data-store
LuDB has a few disadvantages. 
  1. Most notably disk space. H2 wastes a lot of valuable disk space.
     For my test data set with 44 million entries it is 14 MB 
     (sometimes a lot more; depends on H2 internal cleanup). With 
     data-store it is 15 KB.
     Overall I could reduce the disk space from 231 MB to 200 MB (13.4 %
     in this example). That is an average of 4.6 bytes per entry.
  2. Speed:
     a) Liquibase is slow. The first time it takes approx. three seconds
     b) Query and insertion. with data-store we can insert entries 
        up to 1.6 times faster.

Data-store uses a few tricks to save disk space:
  1. We encode the tags into the file names.
  2. To keep them short we translate the key/value of the tag into 
     shorter numbers. For example "foo" -> 12 and "bar" to 47. So the
     tag "foo"/"bar" would be 12/47. 
     We then translate this number into a numeral system of base 62
     (a-zA-Z0-9), so it can be used for file names and it is shorter.
     That way we only have to store the mapping of string to int.
  3. We do that in a simple tab separated file.
2017-04-16 09:07:28 +02:00
58f8606cd3 use special logger for insertion metrics
This allows us to enable/disable metric logging without having to log 
other stuff.
2017-04-13 20:12:00 +02:00
ce44c3d8d6 add logarithmic scaling for the y-axis
Often we have a few very high values and a lot
low values. With a linearly scaled y-axis the
plot is mostly useless.
2017-04-12 19:59:35 +02:00
8baf05962f group by multiple fields
Before we could only group by a single field. But it is acutally
very useful to group by multiple fields. For example to see the
graph for a small set of methods grouped by host and project.
2017-04-12 19:16:19 +02:00
6cc6e679a4 sort fields in 'group by' 2017-04-11 18:39:12 +02:00
ee15594070 remove TODOs
They don't make sense anymore.
E.g. the Tags class is used by classes outside of
org.lucares.performance.db.
2017-04-11 18:09:29 +02:00
cc7e461ebf replace PdbRepository with @Bean annotated method 2017-04-11 18:06:33 +02:00
81b7cfa7bd add default size so that we don't have to specify it in tests 2017-04-08 08:20:59 +02:00
46ce445010 return information about the plotted sequences
this information can be used for tests
2017-04-01 18:27:43 +02:00
2875237272 replace the dateTo with an interval
I hope an interval is easier to handle than having 
to change two date fields
2017-03-27 20:07:32 +02:00
726258020f make it possible to specify the time in the range 2017-03-27 19:38:02 +02:00
364997e611 show better error message, when no data points are found 2017-03-26 17:30:50 +02:00
ea905c2315 replace sysout with logger 2017-03-19 09:20:00 +01:00