Commit Graph

22 Commits

Author SHA1 Message Date
andi fce0f6a04d use PersistentMap in DataStore
Replaces the use of in-memory data structures with the PersistentMap.
This is the crucial step in reducing memory usage for both persistent
storage and main memory.
2018-11-17 09:45:35 +01:00
andi 0e5a47ac10 make sure serialized tags are always sorted the same way 2018-10-03 16:50:09 +02:00
andi d799682b4d Fix build issue with Java 11.
For some reason the Gradle build with Java 11 failed
because of an inner class. After extracting it the build
no longer fails.
2018-09-29 19:50:05 +02:00
andi 24fcfd7763 prepare the addition of a date index 2018-09-28 19:07:01 +02:00
andi 2e433ba969 cleanup 2018-09-13 07:52:14 +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 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
andi 9f37243ba3 Reduce memory consumption of Tags by 50%
by storing only the bytes instead of the string.
2018-03-28 19:08:53 +02:00
andi 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
andi c581e352e4 add method that returns a string representation of the tags in Tags 2018-03-19 19:29:22 +01:00
andi 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
andi f2868fcc1b reduce memory footprint: old generation by 100 MB
This reduces the size of the old generation by 100MB (300MB down to
200MB). Unfortunately the total JVM size didn't change and is still
512MB.

Doc stores the path as byte array instead of Path.
2017-11-18 10:39:01 +01:00
ahr 64db4c48a2 add plots for percentiles 2017-11-06 16:57:22 +01:00
andi d4fd25dc4c replace LinkedHashMap with a more memory efficient implementation
This saves approximately 50MB of heap space.
2017-09-30 17:51:02 +02:00
andi 7e00594382 add helper class that returns the size of objects 2017-09-30 17:49:21 +02:00
andi 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
andi 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
andi cd6b71d35a use shorter folder names
reduces the risk of too long file names
2017-04-02 11:13:08 +02:00
andi a01c8b3907 fix flaky test and improve error handling
just ignore invalid entries
2017-03-18 10:14:41 +01:00
andi f520f18e13 leverage the cached pdbwriters
this increased performance from 500 entries per second to 4000.
2016-12-29 19:24:16 +01:00
andi db0b3d6d24 new file format
Store values in sequences of variable length. Instead of using 8 bytes
per entry we are now using between 2 and 20 bytes. But we are also able
to store every non-negative long value.
2016-12-27 10:24:56 +01:00
andi d1e39513f3 create web application 2016-12-21 17:48:36 +01:00