Commit Graph

259 Commits

Author SHA1 Message Date
andi 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
andi 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
andi 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
andi 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
andi 23f800a441 add date parsing method that returns epochMillis instead of date object 2018-12-16 15:38:26 +01:00
andi cc0157fe0b update java 3rd-party libs 2018-11-20 19:13:59 +01:00
andi 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
andi 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
andi 979e001efd TcpIngestor can handle csv files 2018-10-11 18:56:16 +02:00
andi 6d4e3da672 add test for sending entries with negative values to the ingestor 2018-10-07 09:08:25 +02:00
andi c2ba395015 remove date.js
All references to date.js were replaced with moment.js.
2018-10-04 19:02:06 +02:00
andi 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
andi 1d88c8dfd7 update spring-boot to 2.0.5.RELEASE
update commons-lang3 to 3.8
2018-09-13 18:58:07 +02:00
andi 861797acf7 zoom by mouse wheel 2018-09-13 09:26:43 +02:00
andi 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
andi 15a72f09d7 use default pointer on result image 2018-08-18 12:52:32 +02:00
andi acc2fa42ef zoom-in on click events 2018-08-18 08:32:57 +02:00
andi 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
andi 41b0ca9100 groupBy was not correctly parsed from a URL 2018-08-11 17:55:38 +02:00
andi 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
andi 58623c480f switch date picker to http://www.daterangepicker.com version 3.0.3 2018-08-11 09:09:53 +02:00
andi 6932438ec9 zoom in by selecting the range 2018-08-10 12:47:30 +02:00
andi 6c091c673d fix indentation 2018-08-10 09:20:55 +02:00
andi 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
andi 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
andi 99dbf31d8a update 3rd party libs 2018-08-09 07:20:09 +02:00
andi 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
andi 1567429b3a set default log dir to 'logs' 2018-07-28 08:59:56 +02:00
andi 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
andi 3d71befbad filter gallery items by max value and average 2018-05-19 14:43:16 +02:00
andi 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
andi 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
andi 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
andi 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
andi 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
andi 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
andi 54ee23459d remove obsolete method 2018-05-01 10:14:17 +02:00
andi 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
andi b9cbcace91 rename dashboard to gallery
The dashboard was never really a dashboard.
2018-05-01 08:47:07 +02:00
andi 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
andi 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
andi f573436219 align progress bar vertically in FF 2018-04-30 19:14:31 +02:00
andi 3d4129ec48 navigation bar should be enabled when we are in plot mode
Bug was, that the navigation bar was disabled when no results were
found.
2018-04-30 18:49:23 +02:00
andi 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
andi 024c14435c remove old temp files 2018-04-29 19:14:43 +02:00
andi 9b8f946b30 caption only contains the field value used to split 2018-04-29 08:53:18 +02:00
andi b4d93414f5 show big picture of dashboard items 2018-04-29 08:36:49 +02:00
andi d4b09d4dab render progress bar and add button to abort the dashboard creation 2018-04-28 19:58:31 +02:00
andi 2da54432ff sort tiles on the dashboard 2018-04-28 19:03:07 +02:00
andi 913057c6df add dashboard 2018-04-27 19:36:31 +02:00