Commit Graph

929 Commits

Author SHA1 Message Date
86b8f93752 replace 'in' queries with a simpler syntax
field in (val1, val2)
was replaced with
field=val1,val2
or
field=(val1, val2)
2018-09-12 10:10:01 +02:00
1182d76205 replace the FolderStorage with DiskStorage
- The DiskStorage uses only one file instead of millions.
  Also the block size is only 512 byte instead of 4kb, which
  helps to reduce the memory usage for short sequences.
- Update primitiveCollections to get the new LongList.range
  and LongList.rangeClosed methods.
- BSFile now stores Time&Value sequences and knows how to
  encode the time values with delta encoding.
- Doc had to do some magic tricks to save memory. The path
  was initialized lazy and stored as byte array. This is no
  longer necessary. The patch was replaced by the
  rootBlockNumber of the BSFile.
- Had to temporarily disable the 'in' queries.
- The stored values are now processed as stream of LongLists
  instead of Entry. The overhead for creating Entries is
  gone, so is the memory overhead, because Entry was an
  object and had a reference to the tags, which is
  unnecessary.
2018-09-12 09:35:07 +02:00
26dc052b95 cleanup 2018-08-26 09:40:38 +02:00
b7ebb8ce6a new implementation of an integer storage
It can store multiple streams of integers in a single
file. It uses blocks of 512 byte, which is only 1/8th
of the block size the file based data-store uses. This
reduces the overhead and waste of memory for short
integer streams significantly. Storing data in one big
file, instead of many small files, makes backups much
more efficient.
2018-08-26 09:37:56 +02:00
15a72f09d7 use default pointer on result image 2018-08-18 12:52:32 +02:00
2a68fd72da fix: diagonal line in parallelRequests plot 2018-08-18 12:31:11 +02:00
ea5e16fad5 expressions now support in-queries 2018-08-18 10:31:49 +02:00
acc2fa42ef zoom-in on click events 2018-08-18 08:32:57 +02:00
b01d267300 update primitiveCollections
The new version of primitiveCollections requires Java 10.
2018-08-18 08:32:27 +02:00
22f35f9cf5 restrict zoomin via drag'n'drop to the zoomable area
Fixed issues that not the whole area was selected when moving the
cursor too fast out of the selectable area.
2018-08-11 18:12:29 +02:00
41b0ca9100 groupBy was not correctly parsed from a URL 2018-08-11 17:55:38 +02:00
c1974d21b2 replace startDate + dateRange with start and end date
The new datetimepicker can be used to specify date ranges. We no longer
need to define a start date and a range. This simplifies the code
for zooming and shifting considerably.
2018-08-11 17:45:20 +02:00
58623c480f switch date picker to http://www.daterangepicker.com version 3.0.3 2018-08-11 09:09:53 +02:00
6932438ec9 zoom in by selecting the range 2018-08-10 12:47:30 +02:00
14d9216e40 create margins with constant size
With this we will be able to zoom in by selecting a region. The constant
margins allow us to determine the exact timestampt for a pixel position.
2018-08-10 09:56:57 +02:00
786570503a make plot for parallel requests easier to digest
1. draw it below the scatter plot, so that you can see both
2. make the color lighter, so that you can see both
2018-08-10 09:27:19 +02:00
6c091c673d fix indentation 2018-08-10 09:20:55 +02:00
2fae877444 plot parallel requests with style filledcurve
this makes the duration of requests more obvious
2018-08-09 07:51:56 +02:00
1f48f7b851 div for gallery was not correctly hidden
The div for the gallery was not hidden, because VueJS did evaluate
an empty list as false.
2018-08-09 07:47:38 +02:00
7ece779469 do not draw diagonal lines in ParallelRequestsAggregator 2018-08-09 07:37:29 +02:00
f30a8a26d9 add aggregator for parallel requests
ParallelRequestsAggregator generates a line plot that shows the number
of parallel requests among the plotted events.
This plot has two issues:
1. It only considers events that are plotted. Events that occur later,
   but were started within the plotted time frame are not considered.
2. For performance reasons we are only plotting points when a value
   changed. This leads to diagonal lines.
2018-08-09 07:24:51 +02:00
99dbf31d8a update 3rd party libs 2018-08-09 07:20:09 +02:00
182d1edd97 add a datetime picker
Unfortunately the datetime picker does not support seconds. But it is
one of the few that support date and time and are flexible enough to
be used with VueJS.
2018-08-04 08:32:04 +00:00
6871e250ad use two lines for the xlabels instead of rotating it
We used to rotate the xlabels so that they would not intersect. A
solution that is easier to read is to add a newline between the date and
the time.
2018-08-02 08:20:33 +02:00
1567429b3a set default log dir to 'logs' 2018-07-28 08:59:56 +02:00
89840cf9e9 update dependencies 2018-07-28 08:50:42 +02:00
8b7f7de226 Merge branch 'folderList' of https://bitbucket.com/andreashuber/performance into folderList 2018-07-28 08:39:32 +02:00
bb8dbad393 different tags could be written to the same file
There was a missing synchronization in the code that maps
Strings to Integers.
2018-07-28 08:37:30 +02:00
daaa0e6907 update dependencies
gradle to 4.8
jackson to 2.9.6
spring-boot to 2.0.3
guava to 25.1-jre
gradle-versions-plugin to 0.19.0
2018-06-17 08:59:48 +02:00
3d71befbad filter gallery items by max value and average 2018-05-19 14:43:16 +02:00
38a46a9d46 change default values in the UI
1. yRange is set to 0-120 minutes. This makes the gallery plots easier
to compare.
2. Set groupBy to pod/method/build. That is what I use the most and I
think this will help in most cases.
2018-05-19 08:36:47 +02:00
814af31555 add extra spaces in title of a plot when not all values are shown 2018-05-19 08:29:12 +02:00
f073ea98d0 use a grid to place the gallery items
This has the advantage, that the height of each element in a row is the
same.
2018-05-19 08:24:52 +02:00
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
b61a34a0e6 use existing RandomAccessFile when updating the listing file
Ingestion speed dropped drastically with the old implementation.
In some situations to 7 entries per second over a 10 second period
(sic!). When using the already opened RandomAccessFile the speed
is back to previous values of 40k-50k entries per second on my 10 year
old machine on an encrypted spinning disk.
2018-05-10 17:41:50 +02:00
911062e26b use RandomAccessFile in FolderStorage.getPathByOffset()
The old implementation opened a new buffered reader everytime
getPathByOffset was called. This took 1/20th of a second or
longer. For queries that visited thousands of files this could
take a long time.
We are now using a RandomAccessFile, that is opened once. The
average time spend in getPathByOffset is now down to 0.11ms.
2018-05-10 10:22:25 +02:00
82b8a8a932 reduce memory footprint by lazily intializing the path in Doc
The path in Doc is not optional. This reduces memory consumption,
because we only have to store a long (the offset in the listing file).
This assumes, that only a small percentage of Docs is requested.
2018-05-06 12:58:10 +02:00
e3102c01d4 use listing.csv instead of iterating through all folders
The hope is, that it is faster to read a single file instead of listing
hundreds of folders.
2018-05-05 10:46:16 +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
82dca3a885 y-range max value increased by factor 10
This allows us to specify the range below 10 seconds with milli second
precision.
2018-05-01 13:04:38 +02:00
01bd7e4388 plot statistics written to the legend only count visible values 2018-05-01 13:03:34 +02:00
a4d04ebece add marker line for 60s threshold
In logarithmic plots it is not easy to spot which event are longer than
60 seconds. A thin grey line help with this.

Also: fixed the marker lines (zoom area) which broke when y-ranges were
introduced. The lines were not drawn correctly, when the y-axis offset
was greater than 0.
Gnuplot supports differen coordinate systems. 'graph' is relative to the
area within the axes, 0,0 is bottom left and 1,1 is top right. And
'first' is based on the values of the x1 axis.
By using "graph 0.25,0" we say that the starting point is 25% of the
x-axis and 0% of the y-axis without having to compute the exact values.
2018-05-01 10:51:46 +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
910c1394cb close gallery image when clicking on the image
It was bothersome to have to click on the close icon.
2018-05-01 08:51:20 +02:00
b9cbcace91 rename dashboard to gallery
The dashboard was never really a dashboard.
2018-05-01 08:47:07 +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
1d8f31808e draw labels for x2 axis only if necessary
- added tics every 5 percentage points
2018-05-01 08:07:04 +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
f573436219 align progress bar vertically in FF 2018-04-30 19:14:31 +02:00