Commit Graph

192 Commits

Author SHA1 Message Date
4367323fcd replace deprecated dependency configurations
Using api and implementation instead of the
deprecated compile configuration.

Update to Gradle 6.0.
2019-11-10 11:08:50 +01:00
198b51089d make defaults for groupBy configurable
We do not know which fields exist at compile time.
But it is a great help to have some pre-selected
fields in groupBy.
Solved by adding a configuration option.
2019-11-10 09:38:16 +01:00
bb8b183f91 rename yAxisScale to axisScale
For some reason PlotRequest.yAxisScale does
not work. PlotRequest.axisScale does work.
2019-10-29 18:08:31 +01:00
5a7cde7815 show plotted images 2019-10-27 08:08:55 +01:00
3190074ce3 add examples to the query suggestions 2019-10-26 19:14:51 +02:00
f28a67a5c1 make it possible to render any combination of plots 2019-10-20 10:16:25 +02:00
b7c4fe4c1f move scatter plot creation into an AggregateHandler 2019-10-20 08:11:09 +02:00
4749d54499 fix deprecations due to SpringBoot 2.2.0
replace deprecated MediaType.APPLICATION_JSON_UTF8_VALUE with
MediaType.APPLICATION_JSON_VALUE
2019-10-19 18:56:44 +02:00
7ca7b80255 create icons for plot types 2019-10-10 12:00:41 +02:00
69968b7682 ignore hs_err_pid files 2019-10-09 19:03:13 +02:00
2787b42c31 adding a few filters (no doing anything yet) 2019-10-09 19:02:34 +02:00
65b37e9c67 initial commit of the new UI based on Angular
At this point it is still the example Angular application.
2019-10-08 18:18:24 +02:00
4161cd7f98 only field prefixes returned instead of full values
When using autocomplete to return field values I
missed, that autocomplete had the feature that cut
values at dots. So instead of returning full field
values only the prefix up to the first dot was
returned.
Fixed by making the cut-at-dot feature optional.
2019-08-27 20:37:07 +02:00
2f35978184 fetch available values for gallery via autocomplete method
We had a method that returned the values of a field
with respect to a query. That method was inefficient,
because it executed the query, fetched all Docs
and collected the values.
The autocomplete method we introduced a while back
can answer the same question but much more efficiently.
2019-08-25 18:52:05 +02:00
da97a13ed8 add new ranges for date picker 2019-08-25 10:40:05 +02:00
2cd0d71dde fix compile error in Eclipse
Eclipse marked this as an error. A Gradle build had
no issue.
2019-08-25 10:26:39 +02:00
5b57417f75 make the tics on the y-axis easier readable
People are having trouble to understand durations like
100000 or 2.7E+6 milliseconds. Therefore we are
hanging the labels on the y-axis to include the unit
in the tic's label. We also use multiples of seconds,
minutes, hours and days instead of multiples of 10.
2019-08-25 10:25:47 +02:00
3252fcf42d improve trace logging
- Add filename for trace logs for read/write operations.
2019-08-18 09:25:49 +02:00
574a9c9cc4 update jquery to 3.4.1 2019-07-04 19:12:54 +02:00
a8d77562c9 update daterangepicker to 3.0.5 2019-07-04 19:11:00 +02:00
2cb81e5acd make it possible to ignore columns using the csv ingestor 2019-07-04 09:51:33 +02:00
2eb2a69c17 rename 'percentile' plots to 'cumulative distribution' 2019-05-12 14:30:16 +02:00
dfe9579726 use DateTimeRange.max() instead of arbitrary relative range 2019-04-20 20:36:26 +02:00
d82b33c60e update js libraries 2019-04-20 20:31:51 +02:00
dbe0e02517 rename cluster to partition
We are not clustering the indices, we
are partitioning them.
2019-04-14 10:10:16 +02:00
2a1885a77f cluster the indices 2019-03-31 09:01:55 +02:00
b5e2d0a217 introduce clustering for query completion indices 2019-03-16 10:19:28 +01:00
59aea1a15f introduce index clustering (part 1)
In order to prevent files from getting too big and
make it easier to implement retention policies, we
are splitting all files into chunks. Each chunk
contains the data for a time interval (1 month per
default).
This first changeset introduces the ClusteredPersistentMap
that implements this for PersistentMap. It is used
for a couple (not all) of indices.
2019-02-24 16:50:57 +01:00
fd55ea0866 update vuejs to 2.6.4
Added the version to moment.min.js
2019-02-09 15:39:28 +01:00
93dea402a5 remove obsolete class 2019-02-09 15:25:39 +01:00
493971bcf3 values used in queries were added to the keys.csv
Due to a mistake in Tag which added all strings used
by Tag into the String dictionary, the dictionary
did contain all values that were used in queries.
2019-02-09 08:28:23 +01:00
668d73c926 introduced a new custom file format used for backup and ingestion
The new file format reduces repetition, is easy to parse,
easy to generate in any language and is human readable.
2019-02-03 15:44:35 +01:00
4cde10a9f2 read csv using input stream instead of reader
We are now reading the CSV input without transforming
the data into strings. This reduces the amount of bytes
that have to be converted and copied.
We also made Tag smaller. It no longer stores pointers
to strings, instead it stored integers obtained by
compressing the strings (see StringCompressor). This
reduces memory usage and it speeds up hashcode and
equals, which speeds up access to the writer cache.

Performance gain is almost 100%:
- 330k entries/s -> 670k entries/s, top speed measured over a second
- 62s -> 32s, to ingest 16 million entries
2019-01-01 08:31:28 +01:00
d95a71e32e batch entries between TcpIngestor and PerformanceDB
One bottleneck was the blocking queue used to transport entries
from the listener thread to the ingestor thread.
Reduced the bottleneck by batching entries.
Interestingly the batch size of 100 was better than batch size
of 1000 and better than 10.
2018-12-21 13:11:35 +01:00
3a4101bbf9 increase the buffer between ingestion and insertion thread
I was finally able to show that there is a tiny but measureable
effect of this buffer. I think it was not visible before,
because the parsing was too slow. But now, that I replaced the
date parser, the ingestion thread is twice as fast as the
insertion thread. Therefore the buffer makes more sense.
2018-12-17 19:07:55 +01:00
d37508b7a1 Pattern.split is faster than StringUtils.splitPreserveAll
Document the fact, so that I do not have to repeat the same
test a third time.
2018-12-17 19:05:34 +01:00
40f4506e13 use FastISODateParser.parseAsEpochMilli
Compared to FastISODateParser.parse, which returns an
OffsetDateTime object, parseAsEpochMilli returns the
epoch time millis. The performance improvement for
date parsing alone is roughly 100% (8m dates/s to
18m dates/s).
Insertion speed improved from 13-14s for 1.6m entries
to 11.5-12.5s.
2018-12-16 19:24:47 +01:00
23f800a441 add date parsing method that returns epochMillis instead of date object 2018-12-16 15:38:26 +01:00
cc0157fe0b update java 3rd-party libs 2018-11-20 19:13:59 +01:00
218ea9ed68 use custom date parser
A specialized date parser that can only handle ISO-8601 like dates
(2011-12-03T10:15:30.123Z or 2011-12-03T10:15:30+01:00) but does this
roughly 10 times faster than DateTimeFormatter and 5 times
faster than the FastDateParser of commons-lang3.
2018-11-19 19:23:57 +01:00
eaa234bfa5 rename put to putEntries
The method name put is used too often so that eclipse has a
hard time finding references.
2018-10-11 19:25:01 +02:00
979e001efd TcpIngestor can handle csv files 2018-10-11 18:56:16 +02:00
6d4e3da672 add test for sending entries with negative values to the ingestor 2018-10-07 09:08:25 +02:00
c2ba395015 remove date.js
All references to date.js were replaced with moment.js.
2018-10-04 19:02:06 +02:00
ad630fc6b2 simplify caching in TagsToFile
- PdbFiles no longer require dates to be monotonically
  increasing. Therefore TagsToFile does not have to ensure
  this. => We only have one file per Tags.
- Use EhCache instead of HashMap.
2018-09-30 10:38:25 +02:00
1d88c8dfd7 update spring-boot to 2.0.5.RELEASE
update commons-lang3 to 3.8
2018-09-13 18:58:07 +02:00
861797acf7 zoom by mouse wheel 2018-09-13 09:26:43 +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
15a72f09d7 use default pointer on result image 2018-08-18 12:52:32 +02:00
acc2fa42ef zoom-in on click events 2018-08-18 08:32:57 +02:00