Bjoern Rabenstein
74c9b34a5e
Improve storage instrumentation even more.
...
Add gauge for chunks and chunkdescs in memory (backed by a global
variable to be used later not only for instrumentation but also for
memory management).
Refactored instrumentation code once more (instrumentation.go is back :).
Change-Id: Ife39947e22a48cac4982db7369c231947f446e17
2014-11-25 17:09:04 +01:00
Bjoern Rabenstein
443dd33805
Improve instrumentation in storage.
...
Also, fix some other minor bugs.
Change-Id: If72f1c058b0f47d3e378fdf80228d7e9a8db06c7
2014-11-25 17:09:04 +01:00
Bjoern Rabenstein
192bf52c41
Evict chunkDescs, too.
...
Change-Id: I8b70f22fbf1dfcbc49f9ec391985144649e6ce9c
2014-11-25 17:09:04 +01:00
Bjoern Rabenstein
096fa0f8b2
Squash a number of TODOs.
...
- Staleness delta is no a proper function parameter and not replicated
from package ast.
- Named type 'chunks' replaced by explicit '[]chunk' to avoid confusion.
- For the same reason, replaced 'chunkDescs' by '[]*chunkDescs'.
- Verified that math.Modf is not a speed enhancement over conversion
(actually 5x slower).
- Renamed firstTimeField, lastTimeField into chunkFirstTime and
chunkLastTime.
- Verified unpin() is sufficiently goroutine-safe.
- Decided not to update archivedFingerprintToTimeRange upon series
truncation and added a rationale why.
Change-Id: I863b8d785e5ad9f71eb63e229845eacf1bed8534
2014-11-25 17:09:04 +01:00
Bjoern Rabenstein
427c8d53a5
Fix handling of empty chunkDescs while preloading chunks.
...
Change-Id: I73ce89fe0ef90c6eda78218e5be2cbfa0207c364
2014-11-25 17:09:04 +01:00
Bjoern Rabenstein
ecee5d8281
Fix head chunk persisting and a chunkDesc race condition.
...
- Head chunk persisting only happens in evictOlderThan, so do it
there. (With the previous code, it would never happen.)
- Raw accesses to chunkDesc.chunk are now done via isEvicted (with
locking).
Change-Id: I48b07b56dfea4899b50df159b4ea566954396fcd
2014-11-25 17:09:04 +01:00
Bjoern Rabenstein
2b4ff620aa
Return a nop iterator for series that have been purged completely.
...
Change-Id: I6e92cac4472486feefdecba8593c17867e8c710d
2014-11-25 17:09:03 +01:00
Bjoern Rabenstein
6e3a366f91
Only archive a time series when none of its chunks is pinned.
...
Change-Id: I7e4b67c34b417b8980173bc5dc3b213bd7d698e5
2014-11-25 17:09:03 +01:00
Bjoern Rabenstein
ca42a22e20
Add safety panic to seriesMap.put.
...
Change-Id: I4d4d2e45cc0f908a33eb1ae6e3ee6796adfcbd1e
2014-11-25 17:09:03 +01:00
Bjoern Rabenstein
83b4fa868d
Fix GetBoundaryValues.
...
Change-Id: I8f8bbdb88e9b24e4c37ff869126ed9343f261ce2
2014-11-25 17:08:45 +01:00
Bjoern Rabenstein
fd6600850a
Fix race in chunkDesc.
...
Change-Id: Id7bae115d75886e10d44184a690a76777b1531fe
2014-11-25 17:08:45 +01:00
Bjoern Rabenstein
1c53c09558
Treat empty chunkDescs properly in preloadChunksForRange.
...
Change-Id: Ida1bd3fe1f9fb0ea2d5dbb9704be926f0824f873
2014-11-25 17:08:45 +01:00
Bjoern Rabenstein
38fc24d0ed
Fix targetpool_test.go and other tests.
...
Change-Id: I91a4dd1d39e01f174e1aaae653ce1ed7aecaa624
2014-11-25 17:08:26 +01:00
Julius Volz
7f5d3c2c29
Fix and improve the fp locker.
...
Benchmark:
$ go test -bench 'Fingerprint' -test.run 'Fingerprint' -test.cpu=1,2,4
OLD
BenchmarkFingerprintLockerParallel 500000 3618 ns/op
BenchmarkFingerprintLockerParallel-2 100000 12257 ns/op
BenchmarkFingerprintLockerParallel-4 500000 10164 ns/op
BenchmarkFingerprintLockerSerial 10000000 283 ns/op
BenchmarkFingerprintLockerSerial-2 10000000 284 ns/op
BenchmarkFingerprintLockerSerial-4 10000000 288 ns/op
NEW
BenchmarkFingerprintLockerParallel 1000000 1018 ns/op
BenchmarkFingerprintLockerParallel-2 1000000 1164 ns/op
BenchmarkFingerprintLockerParallel-4 2000000 910 ns/op
BenchmarkFingerprintLockerSerial 50000000 56.0 ns/op
BenchmarkFingerprintLockerSerial-2 50000000 47.9 ns/op
BenchmarkFingerprintLockerSerial-4 50000000 54.5 ns/op
Change-Id: I3c65a43822840e7e64c3c3cfe759e1de51272581
2014-11-25 17:07:45 +01:00
Bjoern Rabenstein
7ad55ef83c
Actually close the iterator channels.
...
Change-Id: I6f6a2aef5ff55c6b2d21ad91d02ae6b0ecba4ae8
2014-11-25 17:07:45 +01:00
Bjoern Rabenstein
8fba3302bc
Bold changes to concurrency.
...
(WIP. Probably doesn't work yet.)
Change-Id: Id1537dfcca53831a1d428078a5863ece7bdf4875
2014-11-25 17:07:45 +01:00
Bjoern Rabenstein
7e6a03fbf9
Fix a few concurrency issues before starting to use the new fp locker.
...
Change-Id: I8615e8816e79ef0882e123163ee590c739b79d12
2014-11-25 17:07:45 +01:00
Bjoern Rabenstein
aea32b0b4b
Avoid redundant fingerprint calculation.
...
Change-Id: Ief8a165dcfa5030226953346ec9dfe4a7787df1f
2014-11-25 17:07:44 +01:00
Bjoern Rabenstein
e9ff29c547
Comment/code cleanup.
...
Change-Id: I38736e3d0fec79759a2bafa35aecf914480ff810
2014-11-25 17:07:44 +01:00
Bjoern Rabenstein
71206dbc06
More code cleanups.
...
Add license text everywhere.
And others....
Change-Id: I11ccde267a2ef7eb366c4788ba7aeae14ba7545c
2014-11-25 17:07:44 +01:00
Bjoern Rabenstein
f5f9f3514a
Major code cleanup.
...
- Make it go-vet and golint clean.
- Add comments, TODOs, etc.
Change-Id: If1392d96f3d5b4cdde597b10c8dff1769fcfabe2
2014-11-25 17:02:53 +01:00
Bjoern Rabenstein
3592dc2359
Implement series eviction.
...
Change-Id: I7a503e0ba78aae3761d032851b06f2807122b085
2014-11-25 17:02:52 +01:00
Bjoern Rabenstein
5a128a04a9
Major reorganization of the storage.
...
Most important, the heads file will now persist all the chunk descs,
too. Implicitly, it will serve as the persisted form of the
fp-to-series map.
Change-Id: Ic867e78f2714d54c3b5733939cc5aef43f7bd08d
2014-11-25 17:02:01 +01:00
Julius Volz
8dfaa5ecd2
Remove use of freelists for chunk bufs.
...
Change-Id: Ib887fdb61e1d96da0cd32545817b925ba88831c1
2014-11-25 17:02:00 +01:00
Julius Volz
15929eece2
Unpin any already loaded chunks upon preloading error.
...
Change-Id: Ib451136e3ef21bce8b814c21b66eaab727ab341b
2014-11-25 17:02:00 +01:00
Bjoern Rabenstein
ecdf5ab14f
Index-persistence switched from gob to a hand-coded solution.
...
Change-Id: Ib4ec42535bd08df16d34d4774bb638e35c5a1841
2014-11-25 17:02:00 +01:00
Julius Volz
e7ed39c9a6
Initial experimental snapshot of next-gen storage.
...
Change-Id: Ifb8709960dbedd1d9f5efd88cdd359ee9fa9d26d
2014-11-25 17:02:00 +01:00