An error occurred fetching the project authors.
- 12 Jul, 2018 1 commit
-
-
Kirill Smelkov authored
-
- 15 Jan, 2018 2 commits
-
-
Kirill Smelkov authored
The cache is needed so that we can provide IStorage.Prefetch functionality generally wrapped on top of a storage driver: when an object is loaded, the loading itself consists of steps: 1. start loading object into cache, 2. wait for the loading to complete. This way Prefetch is naturally only "1" - start loading object into cache but do not wait for the loading to be complete. Go's goroutines naturally help here where we can spawn every such loading into its own goroutine instead of explicitly programming loading in terms of a state machine. Since this cache is mainly needed for Prefetch to work, not to actually cache data (though it works as cache for repeating access too), the goal when writing it was to add minimal overhead for "data-not-yet-in-cache" case. Current state we are not completely there yet but the latency is acceptable - depending on the workload the cache layer adds ~ 0.5 - 1 - 3µs to loading times.
-
Kirill Smelkov authored
-
- 11 Jan, 2018 4 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
- Load does not return "next serial" - Load always returns LoadError wrapping error cause - Load: clarified & documented semantic for "there-is-no-data" results - ErrOidMissing -> NoObjectError (just rename) - ErrXidMissing -> NoDataError (rename + adjust information inside) inside: xid -> oid + deletedAt deletedAt is needed if storages are stacked (e.g. in DemoStorage) in case there is no data for oid/xid in "changes" to find out whether in "changes" oid was created after searched xid.At (and then look into "base"), or it was already deleted in "changes" and then we must not look into "base". see: kirr/ZODB@a762e2f8 - URL IStorage -> IStorageDriver (so that raw driver can properly return LoadError from its load)
-
- 09 Jan, 2018 2 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
Compared to 0abecd63 (X Split IStorage -> IStorage, IStorageDriver) we now reach a point where adding cache on top of storage for 'cache-always-missed' scenario adds ~ 0.5-1-3µs of overhead, which is not ideal but is acceptable for now. The full timing diff is below. Note that thermal throttling was activating near end of each dataset run and this way go vs zhash.go-P16 timings or something around it might be not very representative. The cache size is reduces because we currently benchmark on dataset size 8M (wczblk1-8) and 6M (prod1-1024), which if cache size is 16M fully fit into it and so whole benchmark measures cache startup overhead, not its steady state it will reach soon after program startup. 512K is enough to prefetch 128·4K entries. old = goclientcache=off new = goclientcache=on The patch to turn go client cache off was: ---- 8< ---- --- a/go/zodb/open.go +++ b/go/zodb/open.go @@ -102,6 +102,7 @@ type storage struct { // loading always goes through cache - this way prefetching can work func (s *storage) Load(ctx context.Context, xid Xid) (*Buf, Tid, error) { + return s.IStorageDriver.Load(ctx, xid) return s.l1cache.Load(ctx, xid) } ---- 8< ---- name old time/object new time/object delta dataset:wczblk1-8 deco/fs1/zhash.py 14.9µs ± 1% 14.9µs ± 2% ~ (p=0.905 n=5+5) deco/fs1/zhash.py-P16 124µs ±30% 119µs ±22% ~ (p=0.336 n=16+16) deco/fs1/zhash.go 1.50µs ± 0% 2.20µs ± 0% +46.67% (p=0.008 n=5+5) deco/fs1/zhash.go+prefetch128 3.18µs ± 7% 3.14µs ± 5% ~ (p=0.857 n=5+5) deco/fs1/zhash.go-P16 4.64µs ±109% 8.55µs ±94% +84.12% (p=0.001 n=16+16) deco/zeo/zhash.py 314µs ±11% 299µs ±11% ~ (p=0.421 n=5+5) deco/zeo/zhash.py-P16 2.61ms ± 9% 2.62ms ± 9% ~ (p=0.897 n=16+16) deco/neo/py/sqlite/zhash.py 322µs ± 6% 315µs ± 4% ~ (p=0.548 n=5+5) deco/neo/py/sqlite/zhash.py-P16 2.88ms ± 1% 2.84ms ± 2% -1.19% (p=0.000 n=15+16) deco/neo/py/sqlite/zhash.go 228µs ± 1% 234µs ± 1% +2.57% (p=0.008 n=5+5) deco/neo/py/sqlite/zhash.go+prefetch128 350µs ± 1% 120µs ± 2% -65.67% (p=0.008 n=5+5) deco/neo/py/sqlite/zhash.go-P16 1.78ms ±14% 1.99ms ± 0% +11.83% (p=0.021 n=16+13) deco/neo/py(!log)/sqlite/zhash.py 300µs ± 4% 288µs ± 0% ~ (p=0.063 n=5+4) deco/neo/py(!log)/sqlite/zhash.py-P16 2.82ms ± 3% 2.83ms ± 4% ~ (p=0.762 n=15+16) deco/neo/py(!log)/sqlite/zhash.go 212µs ± 3% 215µs ± 3% ~ (p=0.095 n=5+5) deco/neo/py(!log)/sqlite/zhash.go+prefetch128 321µs ± 1% 110µs ± 3% -65.88% (p=0.008 n=5+5) deco/neo/py(!log)/sqlite/zhash.go-P16 1.82ms ± 0% 1.86ms ± 0% +1.94% (p=0.000 n=14+15) deco/neo/py/sql/zhash.py 354µs ± 5% 344µs ± 4% ~ (p=0.343 n=4+4) deco/neo/py/sql/zhash.py-P16 3.89ms ± 0% 3.87ms ± 0% -0.31% (p=0.001 n=15+15) deco/neo/py/sql/zhash.go 273µs ± 3% 281µs ± 3% ~ (p=0.095 n=5+5) deco/neo/py/sql/zhash.go+prefetch128 457µs ± 1% 177µs ± 3% -61.26% (p=0.008 n=5+5) deco/neo/py/sql/zhash.go-P16 2.79ms ± 0% 2.87ms ± 0% +2.76% (p=0.000 n=14+14) deco/neo/py(!log)/sql/zhash.py 323µs ± 3% 331µs ± 3% ~ (p=0.200 n=4+4) deco/neo/py(!log)/sql/zhash.py-P16 3.65ms ± 1% 3.61ms ± 0% -0.97% (p=0.000 n=15+14) deco/neo/py(!log)/sql/zhash.go 256µs ± 1% 259µs ± 1% +1.09% (p=0.008 n=5+5) deco/neo/py(!log)/sql/zhash.go+prefetch128 410µs ± 1% 153µs ± 4% -62.70% (p=0.008 n=5+5) deco/neo/py(!log)/sql/zhash.go-P16 2.50ms ± 0% 2.46ms ± 0% -1.71% (p=0.000 n=16+14) deco/neo/go/zhash.py 165µs ± 6% 167µs ± 4% ~ (p=0.841 n=5+5) deco/neo/go/zhash.py-P16 1.64ms ± 9% 1.64ms ±11% ~ (p=0.926 n=16+16) deco/neo/go/zhash.go 32.1µs ± 1% 34.0µs ± 1% +5.92% (p=0.008 n=5+5) deco/neo/go/zhash.go+prefetch128 49.3µs ± 1% 18.0µs ± 5% -63.57% (p=0.008 n=5+5) deco/neo/go/zhash.go-P16 234µs ±16% 247µs ±15% +5.78% (p=0.019 n=15+16) deco/neo/go(!sha1)/zhash.go 20.1µs ± 2% 22.5µs ± 1% +11.84% (p=0.008 n=5+5) deco/neo/go(!sha1)/zhash.go+prefetch128 31.3µs ± 2% 12.0µs ± 5% -61.84% (p=0.008 n=5+5) deco/neo/go(!sha1)/zhash.go-P16 145µs ±17% 166µs ±11% +15.15% (p=0.000 n=16+15) dataset:prod1-1024 deco/fs1/zhash.py 11.9µs ± 3% 11.9µs ± 1% ~ (p=0.508 n=5+5) deco/fs1/zhash.py-P16 104µs ± 9% 102µs ±12% ~ (p=0.505 n=14+16) deco/fs1/zhash.go 1.10µs ± 0% 1.80µs ± 0% +63.64% (p=0.008 n=5+5) deco/fs1/zhash.go+prefetch128 2.90µs ±14% 2.60µs ±23% ~ (p=0.087 n=5+5) deco/fs1/zhash.go-P16 3.12µs ±131% 5.21µs ±92% +66.93% (p=0.005 n=16+16) deco/zeo/zhash.py 277µs ± 5% 291µs ± 7% ~ (p=0.151 n=5+5) deco/zeo/zhash.py-P16 2.61ms ± 4% 2.59ms ± 6% ~ (p=0.854 n=14+16) deco/neo/py/sqlite/zhash.py 289µs ± 6% 283µs ± 3% ~ (p=0.421 n=5+5) deco/neo/py/sqlite/zhash.py-P16 2.84ms ± 1% 2.79ms ± 1% -1.77% (p=0.000 n=16+16) deco/neo/py/sqlite/zhash.go 146µs ± 2% 149µs ± 2% +2.22% (p=0.024 n=5+5) deco/neo/py/sqlite/zhash.go+prefetch128 267µs ± 1% 113µs ± 2% -57.81% (p=0.008 n=5+5) deco/neo/py/sqlite/zhash.go-P16 2.02ms ± 0% 2.01ms ± 0% -0.70% (p=0.000 n=15+14) deco/neo/py(!log)/sqlite/zhash.py 270µs ± 3% 266µs ± 2% ~ (p=0.151 n=5+5) deco/neo/py(!log)/sqlite/zhash.py-P16 2.59ms ± 2% 2.58ms ± 2% ~ (p=0.564 n=16+16) deco/neo/py(!log)/sqlite/zhash.go 134µs ± 0% 136µs ± 2% ~ (p=0.143 n=4+5) deco/neo/py(!log)/sqlite/zhash.go+prefetch128 233µs ± 0% 96µs ± 1% -59.00% (p=0.008 n=5+5) deco/neo/py(!log)/sqlite/zhash.go-P16 1.73ms ± 0% 1.71ms ± 0% -1.49% (p=0.000 n=14+15) deco/neo/py/sql/zhash.py 314µs ± 4% 322µs ± 4% ~ (p=0.343 n=4+4) deco/neo/py/sql/zhash.py-P16 3.70ms ± 0% 3.60ms ± 0% -2.74% (p=0.000 n=15+16) deco/neo/py/sql/zhash.go 194µs ± 0% 197µs ± 2% ~ (p=0.159 n=4+5) deco/neo/py/sql/zhash.go+prefetch128 358µs ± 1% 159µs ± 1% -55.50% (p=0.008 n=5+5) deco/neo/py/sql/zhash.go-P16 2.63ms ± 0% 2.67ms ± 0% +1.46% (p=0.000 n=14+13) deco/neo/py(!log)/sql/zhash.py 300µs ± 5% 298µs ± 2% ~ (p=1.000 n=4+4) deco/neo/py(!log)/sql/zhash.py-P16 3.47ms ± 0% 3.35ms ± 0% -3.29% (p=0.000 n=15+13) deco/neo/py(!log)/sql/zhash.go 175µs ± 0% 180µs ± 0% +2.64% (p=0.008 n=5+5) deco/neo/py(!log)/sql/zhash.go+prefetch128 316µs ± 1% 137µs ± 1% -56.61% (p=0.008 n=5+5) deco/neo/py(!log)/sql/zhash.go-P16 2.33ms ± 0% 2.37ms ± 0% +1.74% (p=0.000 n=13+15) deco/neo/go/zhash.py 158µs ± 4% 155µs ± 4% ~ (p=0.421 n=5+5) deco/neo/go/zhash.py-P16 1.64ms ± 8% 1.67ms ± 5% +2.32% (p=0.018 n=15+15) deco/neo/go/zhash.go 24.1µs ± 1% 26.0µs ± 1% +7.97% (p=0.008 n=5+5) deco/neo/go/zhash.go+prefetch128 37.1µs ± 2% 12.3µs ± 3% -66.72% (p=0.008 n=5+5) deco/neo/go/zhash.go-P16 228µs ±11% 253µs ± 9% +10.77% (p=0.000 n=15+14) deco/neo/go(!sha1)/zhash.go 19.1µs ± 1% 21.5µs ± 2% +12.59% (p=0.008 n=5+5) deco/neo/go(!sha1)/zhash.go+prefetch128 29.3µs ± 3% 10.0µs ± 3% -65.82% (p=0.008 n=5+5) deco/neo/go(!sha1)/zhash.go-P16 171µs ± 8% 209µs ±15% +22.59% (p=0.000 n=15+16)
-
- 08 Jan, 2018 3 commits
-
-
Kirill Smelkov authored
This avoid 2 allocations (for oidCacheEntry and for its .revv) for NoHit cache in steady state, speeding things up a bit via lowering pressure on go gc. Startup time increase could be either ignored (because it is only when N(access) < N(cache-size)) or handled later via explicitly preallocating OCE pool on cache creation. ---- 8< ---- name old time/op new time/op delta NoopStorage 56.6ns ± 1% 57.0ns ± 0% +0.77% (p=0.100 n=3+3) NoopStorage-4 56.4ns ± 0% 57.1ns ± 0% +1.24% (p=0.100 n=3+3) CacheStartup 1.95µs ± 2% 1.91µs ±10% ~ (p=0.700 n=3+3) CacheStartup-4 1.31µs ± 5% 1.47µs ± 2% +11.48% (p=0.100 n=3+3) CacheNoHit/size=0 590ns ± 1% 502ns ± 1% -14.81% (p=0.100 n=3+3) CacheNoHit/size=0-4 591ns ± 1% 502ns ± 0% -15.06% (p=0.100 n=3+3) CacheNoHit/size=16 707ns ± 0% 622ns ± 1% -11.98% (p=0.100 n=3+3) CacheNoHit/size=16-4 711ns ± 1% 623ns ± 1% -12.34% (p=0.100 n=3+3) CacheNoHit/size=128 717ns ± 0% 624ns ± 0% -12.88% (p=0.100 n=3+3) CacheNoHit/size=128-4 716ns ± 0% 630ns ± 1% -12.10% (p=0.100 n=3+3) CacheNoHit/size=512 737ns ± 0% 645ns ± 0% -12.40% (p=0.100 n=3+3) CacheNoHit/size=512-4 721ns ± 0% 636ns ± 1% -11.84% (p=0.100 n=3+3) CacheNoHit/size=4096 946ns ± 1% 782ns ± 0% -17.30% (p=0.100 n=3+3) CacheNoHit/size=4096-4 780ns ± 1% 680ns ± 0% -12.86% (p=0.100 n=3+3) CacheHit/size=0 589ns ± 1% 507ns ± 0% -13.98% (p=0.100 n=3+3) CacheHit/size=0-4 588ns ± 0% 503ns ± 1% -14.50% (p=0.100 n=3+3) CacheHit/size=16 122ns ± 1% 121ns ± 1% ~ (p=0.500 n=3+3) CacheHit/size=16-4 123ns ± 1% 124ns ± 2% ~ (p=1.000 n=3+3) CacheHit/size=128 127ns ± 2% 124ns ± 1% ~ (p=0.200 n=3+3) CacheHit/size=128-4 126ns ± 1% 126ns ± 1% ~ (p=0.600 n=3+3) CacheHit/size=512 128ns ± 2% 127ns ± 1% ~ (p=0.300 n=3+3) CacheHit/size=512-4 127ns ± 1% 126ns ± 0% -1.05% (p=0.100 n=3+3) CacheHit/size=4096 130ns ± 0% 130ns ± 3% ~ (p=0.700 n=3+3) CacheHit/size=4096-4 130ns ± 1% 129ns ± 1% ~ (p=0.300 n=3+3) NoopStoragePar 59.7ns ± 3% 57.0ns ± 0% -4.47% (p=0.100 n=3+3) NoopStoragePar-4 31.3ns ± 8% 30.7ns ± 5% ~ (p=1.000 n=3+3) CacheStartupPar 1.97µs ±13% 2.19µs ±10% ~ (p=0.400 n=3+3) CacheStartupPar-4 1.49µs ± 4% 1.71µs ± 4% +14.44% (p=0.100 n=3+3) CacheNoHitPar/size=0 591ns ± 0% 510ns ± 0% -13.65% (p=0.100 n=3+3) CacheNoHitPar/size=0-4 811ns ± 0% 726ns ± 0% -10.40% (p=0.100 n=3+3) CacheNoHitPar/size=16 713ns ± 0% 621ns ± 0% -12.95% (p=0.100 n=3+3) CacheNoHitPar/size=16-4 924ns ± 0% 826ns ± 0% -10.67% (p=0.100 n=3+3) CacheNoHitPar/size=128 717ns ± 0% 629ns ± 0% -12.23% (p=0.100 n=3+3) CacheNoHitPar/size=128-4 953ns ± 0% 848ns ± 0% -11.02% (p=0.100 n=3+3) CacheNoHitPar/size=512 733ns ± 0% 645ns ± 0% -12.00% (p=0.100 n=3+3) CacheNoHitPar/size=512-4 972ns ± 0% 881ns ± 0% -9.36% (p=0.100 n=3+3) CacheNoHitPar/size=4096 941ns ± 0% 788ns ± 0% -16.29% (p=0.100 n=3+3) CacheNoHitPar/size=4096-4 1.07µs ± 0% 0.96µs ± 0% -10.30% (p=0.100 n=3+3) CacheHitPar/size=0 587ns ± 0% 509ns ± 0% -13.23% (p=0.100 n=3+3) CacheHitPar/size=0-4 805ns ± 0% 722ns ± 0% -10.31% (p=0.100 n=3+3) CacheHitPar/size=16 122ns ± 1% 123ns ± 2% ~ (p=1.000 n=3+3) CacheHitPar/size=16-4 236ns ± 1% 216ns ± 0% -8.74% (p=0.100 n=3+3) CacheHitPar/size=128 125ns ± 1% 125ns ± 1% ~ (p=1.000 n=3+3) CacheHitPar/size=128-4 220ns ± 0% 207ns ± 0% -6.06% (p=0.100 n=3+3) CacheHitPar/size=512 127ns ± 2% 127ns ± 1% ~ (p=0.600 n=3+3) CacheHitPar/size=512-4 219ns ± 0% 228ns ± 5% ~ (p=0.600 n=3+3) CacheHitPar/size=4096 129ns ± 1% 129ns ± 0% ~ (p=1.000 n=3+3) CacheHitPar/size=4096-4 223ns ± 5% 223ns ± 4% ~ (p=1.000 n=3+3) NoopStorageProc 54.7ns ± 0% 55.1ns ± 0% +0.67% (p=0.100 n=3+3) NoopStorageProc-4 31.8ns ± 4% 29.5ns ± 1% -7.14% (p=0.100 n=3+3) CacheStartupProc 1.88µs ±11% 2.15µs ±11% ~ (p=0.400 n=3+3) CacheStartupProc-4 1.13µs ± 3% 1.23µs ± 4% +9.04% (p=0.100 n=3+3) CacheNoHitProc/size=0 598ns ± 0% 500ns ± 0% -16.33% (p=0.100 n=3+3) CacheNoHitProc/size=0-4 309ns ± 0% 297ns ± 1% -3.89% (p=0.100 n=3+3) CacheNoHitProc/size=16 711ns ± 0% 615ns ± 0% -13.55% (p=0.100 n=3+3) CacheNoHitProc/size=16-4 356ns ± 0% 314ns ± 0% -11.88% (p=0.100 n=3+3) CacheNoHitProc/size=128 722ns ± 1% 622ns ± 0% -13.90% (p=0.100 n=3+3) CacheNoHitProc/size=128-4 363ns ± 0% 311ns ± 0% -14.25% (p=0.100 n=3+3) CacheNoHitProc/size=512 741ns ± 1% 640ns ± 0% -13.67% (p=0.100 n=3+3) CacheNoHitProc/size=512-4 394ns ± 0% 331ns ± 0% -16.06% (p=0.100 n=3+3) CacheNoHitProc/size=4096 943ns ± 0% 782ns ± 1% -17.04% (p=0.100 n=3+3) CacheNoHitProc/size=4096-4 565ns ± 0% 462ns ± 0% -18.28% (p=0.100 n=3+3) CacheHitProc/size=0 598ns ± 0% 498ns ± 0% -16.67% (p=0.100 n=3+3) CacheHitProc/size=0-4 310ns ± 0% 291ns ± 0% -5.92% (p=0.100 n=3+3) CacheHitProc/size=16 120ns ± 1% 120ns ± 1% ~ (p=0.600 n=3+3) CacheHitProc/size=16-4 57.5ns ± 2% 57.2ns ± 1% ~ (p=1.000 n=3+3) CacheHitProc/size=128 123ns ± 1% 123ns ± 1% ~ (p=1.000 n=3+3) CacheHitProc/size=128-4 58.1ns ± 0% 57.9ns ± 0% ~ (p=0.200 n=3+3) CacheHitProc/size=512 126ns ± 2% 126ns ± 1% ~ (p=1.000 n=3+3) CacheHitProc/size=512-4 58.6ns ± 0% 58.6ns ± 0% ~ (p=1.000 n=3+3) CacheHitProc/size=4096 128ns ± 1% 127ns ± 1% ~ (p=1.000 n=3+3) CacheHitProc/size=4096-4 69.8ns ± 0% 70.6ns ± 1% +1.15% (p=0.100 n=3+3) name old alloc/op new alloc/op delta NoopStorage 0.00B 0.00B ~ (all equal) NoopStorage-4 0.00B 0.00B ~ (all equal) CacheStartup 285B ± 0% 285B ± 0% ~ (all equal) CacheStartup-4 285B ± 0% 285B ± 0% ~ (all equal) CacheNoHit/size=0 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheNoHit/size=0-4 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheNoHit/size=16 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=16-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=128 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=128-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=512 153B ± 0% 97B ± 0% -36.46% (p=0.100 n=3+3) CacheNoHit/size=512-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=4096 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=4096-4 153B ± 0% 97B ± 0% -36.46% (p=0.100 n=3+3) CacheHit/size=0 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheHit/size=0-4 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheHit/size=16 0.00B 0.00B ~ (all equal) CacheHit/size=16-4 0.00B 0.00B ~ (all equal) CacheHit/size=128 0.00B 0.00B ~ (all equal) CacheHit/size=128-4 0.00B 0.00B ~ (all equal) CacheHit/size=512 0.00B 0.00B ~ (all equal) CacheHit/size=512-4 0.00B 0.00B ~ (all equal) CacheHit/size=4096 0.00B 0.00B ~ (all equal) CacheHit/size=4096-4 0.00B 0.00B ~ (all equal) NoopStoragePar 0.00B 0.00B ~ (all equal) NoopStoragePar-4 0.00B 0.00B ~ (all equal) CacheStartupPar 285B ± 0% 285B ± 0% ~ (all equal) CacheStartupPar-4 282B ± 0% 282B ± 1% ~ (p=1.000 n=3+3) CacheNoHitPar/size=0 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheNoHitPar/size=0-4 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheNoHitPar/size=16 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitPar/size=16-4 154B ± 0% 98B ± 0% -36.36% (p=0.100 n=3+3) CacheNoHitPar/size=128 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitPar/size=128-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitPar/size=512 153B ± 0% 97B ± 1% -36.82% (p=0.100 n=3+3) CacheNoHitPar/size=512-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitPar/size=4096 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitPar/size=4096-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheHitPar/size=0 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheHitPar/size=0-4 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheHitPar/size=16 0.00B 0.00B ~ (all equal) CacheHitPar/size=16-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=128 0.00B 0.00B ~ (all equal) CacheHitPar/size=128-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=512 0.00B 0.00B ~ (all equal) CacheHitPar/size=512-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096-4 0.00B 0.00B ~ (all equal) NoopStorageProc 0.00B 0.00B ~ (all equal) NoopStorageProc-4 0.00B 0.00B ~ (all equal) CacheStartupProc 285B ± 0% 285B ± 0% ~ (all equal) CacheStartupProc-4 285B ± 0% 285B ± 0% ~ (all equal) CacheNoHitProc/size=0 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheNoHitProc/size=0-4 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheNoHitProc/size=16 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitProc/size=16-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitProc/size=128 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitProc/size=128-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitProc/size=512 153B ± 0% 96B ± 1% -37.04% (p=0.100 n=3+3) CacheNoHitProc/size=512-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitProc/size=4096 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHitProc/size=4096-4 153B ± 0% 97B ± 0% -36.60% (p=0.100 n=3+3) CacheHitProc/size=0 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheHitProc/size=0-4 152B ± 0% 96B ± 0% -36.84% (p=0.100 n=3+3) CacheHitProc/size=16 0.00B 0.00B ~ (all equal) CacheHitProc/size=16-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=128 0.00B 0.00B ~ (all equal) CacheHitProc/size=128-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=512 0.00B 0.00B ~ (all equal) CacheHitProc/size=512-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096-4 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta NoopStorage 0.00 0.00 ~ (all equal) NoopStorage-4 0.00 0.00 ~ (all equal) CacheStartup 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartup-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHit/size=0 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=0-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=16 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=16-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=128 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=128-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=512 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=512-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=4096 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHit/size=4096-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHit/size=0 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHit/size=0-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHit/size=16 0.00 0.00 ~ (all equal) CacheHit/size=16-4 0.00 0.00 ~ (all equal) CacheHit/size=128 0.00 0.00 ~ (all equal) CacheHit/size=128-4 0.00 0.00 ~ (all equal) CacheHit/size=512 0.00 0.00 ~ (all equal) CacheHit/size=512-4 0.00 0.00 ~ (all equal) CacheHit/size=4096 0.00 0.00 ~ (all equal) CacheHit/size=4096-4 0.00 0.00 ~ (all equal) NoopStoragePar 0.00 0.00 ~ (all equal) NoopStoragePar-4 0.00 0.00 ~ (all equal) CacheStartupPar 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartupPar-4 4.00 ± 0% 4.33 ±15% ~ (p=1.000 n=3+3) CacheNoHitPar/size=0 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=0-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=16 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=16-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=128 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=128-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=512 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=512-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=4096 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitPar/size=4096-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHitPar/size=0 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHitPar/size=0-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHitPar/size=16 0.00 0.00 ~ (all equal) CacheHitPar/size=16-4 0.00 0.00 ~ (all equal) CacheHitPar/size=128 0.00 0.00 ~ (all equal) CacheHitPar/size=128-4 0.00 0.00 ~ (all equal) CacheHitPar/size=512 0.00 0.00 ~ (all equal) CacheHitPar/size=512-4 0.00 0.00 ~ (all equal) CacheHitPar/size=4096 0.00 0.00 ~ (all equal) CacheHitPar/size=4096-4 0.00 0.00 ~ (all equal) NoopStorageProc 0.00 0.00 ~ (all equal) NoopStorageProc-4 0.00 0.00 ~ (all equal) CacheStartupProc 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartupProc-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHitProc/size=0 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=0-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=16 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=16-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=128 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=128-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=512 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=512-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=4096 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheNoHitProc/size=4096-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHitProc/size=0 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHitProc/size=0-4 3.00 ± 0% 1.00 ± 0% -66.67% (p=0.100 n=3+3) CacheHitProc/size=16 0.00 0.00 ~ (all equal) CacheHitProc/size=16-4 0.00 0.00 ~ (all equal) CacheHitProc/size=128 0.00 0.00 ~ (all equal) CacheHitProc/size=128-4 0.00 0.00 ~ (all equal) CacheHitProc/size=512 0.00 0.00 ~ (all equal) CacheHitProc/size=512-4 0.00 0.00 ~ (all equal) CacheHitProc/size=4096 0.00 0.00 ~ (all equal) CacheHitProc/size=4096-4 0.00 0.00 ~ (all equal)
-
Kirill Smelkov authored
On NoHit workloads gc is invoked for every load and since cache's goal is to provide minimum slowdown the tracepoint overhead becomes visible. Cache gc tracepoints were initially added for testing - to be able to wait for gc to start/finish - when gc was running in its own goroutine, but now, after 0e2be3b3 (X zodb/cache: Performing GC in separate goroutine was actually a bad idea), when gc is running synchronously there is need for this tracing events even from testing point of view. So remove them. ---- 8< ---- name old time/op new time/op delta NoopStorage 57.9ns ± 1% 56.6ns ± 1% -2.30% (p=0.100 n=3+3) NoopStorage-4 57.4ns ± 1% 56.4ns ± 0% -1.68% (p=0.100 n=3+3) CacheStartup 2.13µs ±16% 1.95µs ± 2% ~ (p=0.700 n=3+3) CacheStartup-4 1.29µs ± 4% 1.31µs ± 5% ~ (p=0.700 n=3+3) CacheNoHit/size=0 677ns ± 1% 590ns ± 1% -12.86% (p=0.100 n=3+3) CacheNoHit/size=0-4 664ns ± 1% 591ns ± 1% -11.04% (p=0.100 n=3+3) CacheNoHit/size=16 792ns ± 0% 707ns ± 0% -10.81% (p=0.100 n=3+3) CacheNoHit/size=16-4 788ns ± 0% 711ns ± 1% -9.85% (p=0.100 n=3+3) CacheNoHit/size=128 796ns ± 0% 717ns ± 0% -9.93% (p=0.100 n=3+3) CacheNoHit/size=128-4 795ns ± 1% 716ns ± 0% -9.86% (p=0.100 n=3+3) CacheNoHit/size=512 816ns ± 0% 737ns ± 0% -9.69% (p=0.100 n=3+3) CacheNoHit/size=512-4 803ns ± 0% 721ns ± 0% -10.25% (p=0.100 n=3+3) CacheNoHit/size=4096 1.05µs ± 1% 0.95µs ± 1% -10.13% (p=0.100 n=3+3) CacheNoHit/size=4096-4 856ns ± 0% 780ns ± 1% -8.91% (p=0.100 n=3+3) CacheHit/size=0 664ns ± 0% 589ns ± 1% -11.34% (p=0.100 n=3+3) CacheHit/size=0-4 660ns ± 0% 588ns ± 0% -10.86% (p=0.100 n=3+3) CacheHit/size=16 123ns ± 4% 122ns ± 1% ~ (p=0.800 n=3+3) CacheHit/size=16-4 121ns ± 1% 123ns ± 1% ~ (p=0.300 n=3+3) CacheHit/size=128 124ns ± 1% 127ns ± 2% +2.70% (p=0.100 n=3+3) CacheHit/size=128-4 124ns ± 1% 126ns ± 1% +2.16% (p=0.100 n=3+3) CacheHit/size=512 126ns ± 1% 128ns ± 2% ~ (p=0.400 n=3+3) CacheHit/size=512-4 125ns ± 1% 127ns ± 1% +1.60% (p=0.100 n=3+3) CacheHit/size=4096 127ns ± 1% 130ns ± 0% +2.09% (p=0.100 n=3+3) CacheHit/size=4096-4 128ns ± 1% 130ns ± 1% +1.56% (p=0.100 n=3+3) NoopStoragePar 59.2ns ± 1% 59.7ns ± 3% ~ (p=1.000 n=3+3) NoopStoragePar-4 31.2ns ± 8% 31.3ns ± 8% ~ (p=1.000 n=3+3) CacheStartupPar 2.04µs ± 6% 1.97µs ±13% ~ (p=1.000 n=3+3) CacheStartupPar-4 1.48µs ± 3% 1.49µs ± 4% ~ (p=0.700 n=3+3) CacheNoHitPar/size=0 670ns ± 0% 591ns ± 0% -11.75% (p=0.100 n=3+3) CacheNoHitPar/size=0-4 904ns ± 0% 811ns ± 0% -10.32% (p=0.100 n=3+3) CacheNoHitPar/size=16 789ns ± 0% 713ns ± 0% -9.63% (p=0.100 n=3+3) CacheNoHitPar/size=16-4 1.03µs ± 0% 0.92µs ± 0% -10.06% (p=0.100 n=3+3) CacheNoHitPar/size=128 800ns ± 0% 717ns ± 0% -10.45% (p=0.100 n=3+3) CacheNoHitPar/size=128-4 1.04µs ± 0% 0.95µs ± 0% -8.63% (p=0.100 n=3+3) CacheNoHitPar/size=512 818ns ± 0% 733ns ± 0% -10.35% (p=0.100 n=3+3) CacheNoHitPar/size=512-4 1.07µs ± 0% 0.97µs ± 0% -9.04% (p=0.100 n=3+3) CacheNoHitPar/size=4096 1.06µs ± 1% 0.94µs ± 0% -11.50% (p=0.100 n=3+3) CacheNoHitPar/size=4096-4 1.17µs ± 1% 1.07µs ± 0% -7.89% (p=0.100 n=3+3) CacheHitPar/size=0 665ns ± 0% 587ns ± 0% -11.69% (p=0.100 n=3+3) CacheHitPar/size=0-4 903ns ± 1% 805ns ± 0% -10.85% (p=0.100 n=3+3) CacheHitPar/size=16 124ns ± 1% 122ns ± 1% ~ (p=0.200 n=3+3) CacheHitPar/size=16-4 217ns ± 1% 236ns ± 1% +8.74% (p=0.100 n=3+3) CacheHitPar/size=128 125ns ± 0% 125ns ± 1% ~ (p=1.000 n=3+3) CacheHitPar/size=128-4 215ns ± 1% 220ns ± 0% +2.48% (p=0.100 n=3+3) CacheHitPar/size=512 127ns ± 1% 127ns ± 2% ~ (p=0.600 n=3+3) CacheHitPar/size=512-4 241ns ± 0% 219ns ± 0% -9.14% (p=0.100 n=3+3) CacheHitPar/size=4096 129ns ± 0% 129ns ± 1% ~ (p=1.000 n=3+3) CacheHitPar/size=4096-4 236ns ± 4% 223ns ± 5% ~ (p=0.200 n=3+3) NoopStorageProc 56.1ns ± 0% 54.7ns ± 0% -2.44% (p=0.100 n=3+3) NoopStorageProc-4 37.1ns ±10% 31.8ns ± 4% -14.45% (p=0.100 n=3+3) CacheStartupProc 1.79µs ± 3% 1.88µs ±11% ~ (p=0.700 n=3+3) CacheStartupProc-4 1.08µs ± 7% 1.13µs ± 3% ~ (p=0.400 n=3+3) CacheNoHitProc/size=0 669ns ± 0% 598ns ± 0% -10.66% (p=0.100 n=3+3) CacheNoHitProc/size=0-4 414ns ±15% 309ns ± 0% -25.38% (p=0.100 n=3+3) CacheNoHitProc/size=16 792ns ± 0% 711ns ± 0% -10.27% (p=0.100 n=3+3) CacheNoHitProc/size=16-4 440ns ± 7% 356ns ± 0% -19.02% (p=0.100 n=3+3) CacheNoHitProc/size=128 808ns ± 0% 722ns ± 1% -10.61% (p=0.100 n=3+3) CacheNoHitProc/size=128-4 467ns ± 8% 363ns ± 0% -22.29% (p=0.100 n=3+3) CacheNoHitProc/size=512 834ns ± 1% 741ns ± 1% -11.08% (p=0.100 n=3+3) CacheNoHitProc/size=512-4 499ns ± 9% 394ns ± 0% -20.98% (p=0.100 n=3+3) CacheNoHitProc/size=4096 1.07µs ± 0% 0.94µs ± 0% -11.71% (p=0.100 n=3+3) CacheNoHitProc/size=4096-4 629ns ± 3% 565ns ± 0% -10.12% (p=0.100 n=3+3) CacheHitProc/size=0 669ns ± 0% 598ns ± 0% -10.61% (p=0.100 n=3+3) CacheHitProc/size=0-4 381ns ± 2% 310ns ± 0% -18.72% (p=0.100 n=3+3) CacheHitProc/size=16 121ns ± 1% 120ns ± 1% ~ (p=0.400 n=3+3) CacheHitProc/size=16-4 65.0ns ± 3% 57.5ns ± 2% -11.59% (p=0.100 n=3+3) CacheHitProc/size=128 124ns ± 0% 123ns ± 1% ~ (p=0.700 n=3+3) CacheHitProc/size=128-4 74.9ns ± 3% 58.1ns ± 0% -22.44% (p=0.100 n=3+3) CacheHitProc/size=512 125ns ± 1% 126ns ± 2% ~ (p=0.600 n=3+3) CacheHitProc/size=512-4 71.5ns ± 2% 58.6ns ± 0% -17.96% (p=0.100 n=3+3) CacheHitProc/size=4096 132ns ± 6% 128ns ± 1% ~ (p=0.600 n=3+3) CacheHitProc/size=4096-4 80.5ns ± 7% 69.8ns ± 0% -13.30% (p=0.100 n=3+3) name old alloc/op new alloc/op delta NoopStorage 0.00B 0.00B ~ (all equal) NoopStorage-4 0.00B 0.00B ~ (all equal) CacheStartup 285B ± 0% 285B ± 0% ~ (all equal) CacheStartup-4 285B ± 0% 285B ± 0% ~ (all equal) CacheNoHit/size=0 152B ± 0% 152B ± 0% ~ (all equal) CacheNoHit/size=0-4 152B ± 0% 152B ± 0% ~ (all equal) CacheNoHit/size=16 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHit/size=16-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHit/size=128 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHit/size=128-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHit/size=512 153B ± 0% 153B ± 0% ~ (p=1.000 n=3+3) CacheNoHit/size=512-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHit/size=4096 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHit/size=4096-4 152B ± 0% 153B ± 0% ~ (p=1.000 n=3+3) CacheHit/size=0 152B ± 0% 152B ± 0% ~ (all equal) CacheHit/size=0-4 152B ± 0% 152B ± 0% ~ (all equal) CacheHit/size=16 0.00B 0.00B ~ (all equal) CacheHit/size=16-4 0.00B 0.00B ~ (all equal) CacheHit/size=128 0.00B 0.00B ~ (all equal) CacheHit/size=128-4 0.00B 0.00B ~ (all equal) CacheHit/size=512 0.00B 0.00B ~ (all equal) CacheHit/size=512-4 0.00B 0.00B ~ (all equal) CacheHit/size=4096 0.00B 0.00B ~ (all equal) CacheHit/size=4096-4 0.00B 0.00B ~ (all equal) NoopStoragePar 0.00B 0.00B ~ (all equal) NoopStoragePar-4 0.00B 0.00B ~ (all equal) CacheStartupPar 285B ± 0% 285B ± 0% ~ (all equal) CacheStartupPar-4 281B ± 0% 282B ± 0% ~ (p=0.300 n=3+3) CacheNoHitPar/size=0 152B ± 0% 152B ± 0% ~ (all equal) CacheNoHitPar/size=0-4 152B ± 0% 152B ± 0% ~ (all equal) CacheNoHitPar/size=16 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitPar/size=16-4 155B ± 0% 154B ± 0% ~ (p=0.400 n=3+3) CacheNoHitPar/size=128 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitPar/size=128-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitPar/size=512 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitPar/size=512-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitPar/size=4096 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitPar/size=4096-4 153B ± 0% 153B ± 0% ~ (all equal) CacheHitPar/size=0 152B ± 0% 152B ± 0% ~ (all equal) CacheHitPar/size=0-4 152B ± 0% 152B ± 0% ~ (all equal) CacheHitPar/size=16 0.00B 0.00B ~ (all equal) CacheHitPar/size=16-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=128 0.00B 0.00B ~ (all equal) CacheHitPar/size=128-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=512 0.00B 0.00B ~ (all equal) CacheHitPar/size=512-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096-4 0.00B 0.00B ~ (all equal) NoopStorageProc 0.00B 0.00B ~ (all equal) NoopStorageProc-4 0.00B 0.00B ~ (all equal) CacheStartupProc 285B ± 0% 285B ± 0% ~ (all equal) CacheStartupProc-4 285B ± 0% 285B ± 0% ~ (all equal) CacheNoHitProc/size=0 152B ± 0% 152B ± 0% ~ (all equal) CacheNoHitProc/size=0-4 152B ± 0% 152B ± 0% ~ (all equal) CacheNoHitProc/size=16 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitProc/size=16-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitProc/size=128 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitProc/size=128-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitProc/size=512 153B ± 0% 153B ± 0% ~ (p=1.000 n=3+3) CacheNoHitProc/size=512-4 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitProc/size=4096 153B ± 0% 153B ± 0% ~ (all equal) CacheNoHitProc/size=4096-4 153B ± 0% 153B ± 0% ~ (all equal) CacheHitProc/size=0 152B ± 0% 152B ± 0% ~ (all equal) CacheHitProc/size=0-4 152B ± 0% 152B ± 0% ~ (all equal) CacheHitProc/size=16 0.00B 0.00B ~ (all equal) CacheHitProc/size=16-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=128 0.00B 0.00B ~ (all equal) CacheHitProc/size=128-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=512 0.00B 0.00B ~ (all equal) CacheHitProc/size=512-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096-4 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta NoopStorage 0.00 0.00 ~ (all equal) NoopStorage-4 0.00 0.00 ~ (all equal) CacheStartup 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartup-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHit/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=16 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=128 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=512 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=4096 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHit/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHit/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHit/size=16 0.00 0.00 ~ (all equal) CacheHit/size=16-4 0.00 0.00 ~ (all equal) CacheHit/size=128 0.00 0.00 ~ (all equal) CacheHit/size=128-4 0.00 0.00 ~ (all equal) CacheHit/size=512 0.00 0.00 ~ (all equal) CacheHit/size=512-4 0.00 0.00 ~ (all equal) CacheHit/size=4096 0.00 0.00 ~ (all equal) CacheHit/size=4096-4 0.00 0.00 ~ (all equal) NoopStoragePar 0.00 0.00 ~ (all equal) NoopStoragePar-4 0.00 0.00 ~ (all equal) CacheStartupPar 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartupPar-4 4.00 ± 0% 4.00 ± 0% ~ (all equal) CacheNoHitPar/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=16 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=128 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=512 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=4096 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitPar/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitPar/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitPar/size=16 0.00 0.00 ~ (all equal) CacheHitPar/size=16-4 0.00 0.00 ~ (all equal) CacheHitPar/size=128 0.00 0.00 ~ (all equal) CacheHitPar/size=128-4 0.00 0.00 ~ (all equal) CacheHitPar/size=512 0.00 0.00 ~ (all equal) CacheHitPar/size=512-4 0.00 0.00 ~ (all equal) CacheHitPar/size=4096 0.00 0.00 ~ (all equal) CacheHitPar/size=4096-4 0.00 0.00 ~ (all equal) NoopStorageProc 0.00 0.00 ~ (all equal) NoopStorageProc-4 0.00 0.00 ~ (all equal) CacheStartupProc 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartupProc-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHitProc/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=16 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=128 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=512 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=4096 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitProc/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitProc/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitProc/size=16 0.00 0.00 ~ (all equal) CacheHitProc/size=16-4 0.00 0.00 ~ (all equal) CacheHitProc/size=128 0.00 0.00 ~ (all equal) CacheHitProc/size=128-4 0.00 0.00 ~ (all equal) CacheHitProc/size=512 0.00 0.00 ~ (all equal) CacheHitProc/size=512-4 0.00 0.00 ~ (all equal) CacheHitProc/size=4096 0.00 0.00 ~ (all equal) CacheHitProc/size=4096-4 0.00 0.00 ~ (all equal)
-
Kirill Smelkov authored
Probably channel signalling + goroutine scheduling overhead was taking too much - see appendix for timings. Once again - as in 521d3ae5 (X zodb/cache: Also free OCE entries on GC) we can ignore *Hit/size=0 increase as /size=0 won't happen in practice and we mostly care about NoHit overhead for which /size=0 also improves. The HitProc/* increase, as in 521d3ae5, is also withing noise. ---- 8< ---- name old time/op new time/op delta NoopStorage 56.6ns ± 0% 57.9ns ± 1% +2.36% (p=0.100 n=3+3) NoopStorage-4 56.9ns ± 1% 57.4ns ± 1% ~ (p=0.200 n=3+3) CacheStartup 1.97µs ± 3% 2.13µs ±16% ~ (p=0.600 n=3+3) CacheStartup-4 1.29µs ± 4% 1.29µs ± 4% ~ (p=1.000 n=3+3) CacheNoHit/size=0 1.34µs ± 1% 0.68µs ± 1% -49.43% (p=0.100 n=3+3) CacheNoHit/size=0-4 941ns ± 1% 664ns ± 1% -29.38% (p=0.100 n=3+3) CacheNoHit/size=16 1.38µs ± 3% 0.79µs ± 0% -42.49% (p=0.100 n=3+3) CacheNoHit/size=16-4 939ns ± 2% 788ns ± 0% -16.02% (p=0.100 n=3+3) CacheNoHit/size=128 1.32µs ± 2% 0.80µs ± 0% -39.55% (p=0.100 n=3+3) CacheNoHit/size=128-4 946ns ± 1% 795ns ± 1% -16.03% (p=0.100 n=3+3) CacheNoHit/size=512 1.37µs ± 3% 0.82µs ± 0% -40.33% (p=0.100 n=3+3) CacheNoHit/size=512-4 977ns ± 2% 803ns ± 0% -17.75% (p=0.100 n=3+3) CacheNoHit/size=4096 1.37µs ± 4% 1.05µs ± 1% -23.03% (p=0.100 n=3+3) CacheNoHit/size=4096-4 1.07µs ± 0% 0.86µs ± 0% -19.94% (p=0.100 n=3+3) CacheHit/size=0 164ns ±29% 664ns ± 0% +305.08% (p=0.100 n=3+3) CacheHit/size=0-4 251ns ± 6% 660ns ± 0% +162.95% (p=0.100 n=3+3) CacheHit/size=16 120ns ± 1% 123ns ± 4% ~ (p=0.700 n=3+3) CacheHit/size=16-4 121ns ± 2% 121ns ± 1% ~ (p=1.000 n=3+3) CacheHit/size=128 123ns ± 1% 124ns ± 1% ~ (p=1.000 n=3+3) CacheHit/size=128-4 124ns ± 0% 124ns ± 1% ~ (p=1.000 n=3+3) CacheHit/size=512 125ns ± 0% 126ns ± 1% ~ (p=0.400 n=3+3) CacheHit/size=512-4 126ns ± 1% 125ns ± 1% ~ (p=0.400 n=3+3) CacheHit/size=4096 128ns ± 1% 127ns ± 1% ~ (p=1.000 n=3+3) CacheHit/size=4096-4 128ns ± 1% 128ns ± 1% ~ (p=1.000 n=3+3) NoopStoragePar 56.5ns ± 0% 59.2ns ± 1% +4.84% (p=0.100 n=3+3) NoopStoragePar-4 33.1ns ± 3% 31.2ns ± 8% ~ (p=0.400 n=3+3) CacheStartupPar 2.01µs ±14% 2.04µs ± 6% ~ (p=0.800 n=3+3) CacheStartupPar-4 1.47µs ± 4% 1.48µs ± 3% ~ (p=1.000 n=3+3) CacheNoHitPar/size=0 1.35µs ± 3% 0.67µs ± 0% -50.25% (p=0.100 n=3+3) CacheNoHitPar/size=0-4 1.04µs ± 0% 0.90µs ± 0% -12.83% (p=0.100 n=3+3) CacheNoHitPar/size=16 1.32µs ± 2% 0.79µs ± 0% -40.36% (p=0.100 n=3+3) CacheNoHitPar/size=16-4 1.04µs ± 0% 1.03µs ± 0% -1.28% (p=0.100 n=3+3) CacheNoHitPar/size=128 1.33µs ± 1% 0.80µs ± 0% -40.02% (p=0.100 n=3+3) CacheNoHitPar/size=128-4 1.03µs ± 1% 1.04µs ± 0% ~ (p=0.400 n=3+3) CacheNoHitPar/size=512 1.34µs ± 2% 0.82µs ± 0% -38.79% (p=0.100 n=3+3) CacheNoHitPar/size=512-4 1.07µs ± 2% 1.07µs ± 0% ~ (p=0.600 n=3+3) CacheNoHitPar/size=4096 1.36µs ± 4% 1.06µs ± 1% -21.87% (p=0.100 n=3+3) CacheNoHitPar/size=4096-4 1.16µs ± 2% 1.17µs ± 1% ~ (p=0.700 n=3+3) CacheHitPar/size=0 163ns ± 3% 665ns ± 0% +306.94% (p=0.100 n=3+3) CacheHitPar/size=0-4 394ns ± 3% 903ns ± 1% +129.08% (p=0.100 n=3+3) CacheHitPar/size=16 121ns ± 0% 124ns ± 1% +2.20% (p=0.100 n=3+3) CacheHitPar/size=16-4 213ns ± 0% 217ns ± 1% +2.03% (p=0.100 n=3+3) CacheHitPar/size=128 124ns ± 1% 125ns ± 0% ~ (p=0.400 n=3+3) CacheHitPar/size=128-4 208ns ± 0% 215ns ± 1% +3.21% (p=0.100 n=3+3) CacheHitPar/size=512 126ns ± 1% 127ns ± 1% ~ (p=0.300 n=3+3) CacheHitPar/size=512-4 205ns ± 0% 241ns ± 0% +17.40% (p=0.100 n=3+3) CacheHitPar/size=4096 127ns ± 0% 129ns ± 0% +1.57% (p=0.100 n=3+3) CacheHitPar/size=4096-4 201ns ± 0% 236ns ± 4% +17.58% (p=0.100 n=3+3) NoopStorageProc 54.8ns ± 0% 56.1ns ± 0% +2.43% (p=0.100 n=3+3) NoopStorageProc-4 32.6ns ± 4% 37.1ns ±10% +14.02% (p=0.100 n=3+3) CacheStartupProc 1.91µs ± 7% 1.79µs ± 3% ~ (p=0.400 n=3+3) CacheStartupProc-4 1.13µs ± 1% 1.08µs ± 7% ~ (p=0.400 n=3+3) CacheNoHitProc/size=0 1.32µs ± 1% 0.67µs ± 0% -49.38% (p=0.100 n=3+3) CacheNoHitProc/size=0-4 649ns ± 1% 414ns ±15% -36.23% (p=0.100 n=3+3) CacheNoHitProc/size=16 1.33µs ± 3% 0.79µs ± 0% -40.23% (p=0.100 n=3+3) CacheNoHitProc/size=16-4 650ns ± 2% 440ns ± 7% -32.34% (p=0.100 n=3+3) CacheNoHitProc/size=128 1.31µs ± 5% 0.81µs ± 0% -38.41% (p=0.100 n=3+3) CacheNoHitProc/size=128-4 663ns ± 1% 467ns ± 8% -29.58% (p=0.100 n=3+3) CacheNoHitProc/size=512 1.30µs ± 2% 0.83µs ± 1% -35.72% (p=0.100 n=3+3) CacheNoHitProc/size=512-4 685ns ± 1% 499ns ± 9% -27.12% (p=0.100 n=3+3) CacheNoHitProc/size=4096 1.35µs ± 3% 1.07µs ± 0% -20.87% (p=0.100 n=3+3) CacheNoHitProc/size=4096-4 684ns ± 2% 629ns ± 3% -8.04% (p=0.100 n=3+3) CacheHitProc/size=0 159ns ± 3% 669ns ± 0% +320.75% (p=0.100 n=3+3) CacheHitProc/size=0-4 75.1ns ±10% 381.0ns ± 2% +407.10% (p=0.100 n=3+3) CacheHitProc/size=16 120ns ± 1% 121ns ± 1% ~ (p=0.300 n=3+3) CacheHitProc/size=16-4 58.1ns ± 2% 65.0ns ± 3% +11.94% (p=0.100 n=3+3) CacheHitProc/size=128 123ns ± 0% 124ns ± 0% +0.81% (p=0.100 n=3+3) CacheHitProc/size=128-4 57.6ns ± 0% 74.9ns ± 3% +30.05% (p=0.100 n=3+3) CacheHitProc/size=512 124ns ± 1% 125ns ± 1% ~ (p=0.300 n=3+3) CacheHitProc/size=512-4 59.4ns ± 1% 71.5ns ± 2% +20.38% (p=0.100 n=3+3) CacheHitProc/size=4096 127ns ± 0% 132ns ± 6% +3.94% (p=0.100 n=3+3) CacheHitProc/size=4096-4 64.2ns ± 1% 80.5ns ± 7% +25.34% (p=0.100 n=3+3) name old alloc/op new alloc/op delta NoopStorage 0.00B 0.00B ~ (all equal) NoopStorage-4 0.00B 0.00B ~ (all equal) CacheStartup 285B ± 0% 285B ± 0% ~ (all equal) CacheStartup-4 285B ± 0% 285B ± 0% ~ (all equal) CacheNoHit/size=0 247B ± 2% 152B ± 0% -38.38% (p=0.100 n=3+3) CacheNoHit/size=0-4 153B ± 0% 152B ± 0% -0.65% (p=0.100 n=3+3) CacheNoHit/size=16 247B ± 2% 153B ± 0% -37.97% (p=0.100 n=3+3) CacheNoHit/size=16-4 153B ± 0% 153B ± 0% ~ (p=1.000 n=3+3) CacheNoHit/size=128 241B ± 1% 153B ± 0% -36.60% (p=0.100 n=3+3) CacheNoHit/size=128-4 153B ± 0% 153B ± 0% ~ (p=1.000 n=3+3) CacheNoHit/size=512 245B ± 1% 153B ± 0% -37.64% (p=0.100 n=3+3) CacheNoHit/size=512-4 154B ± 0% 153B ± 0% -0.65% (p=0.100 n=3+3) CacheNoHit/size=4096 244B ± 1% 153B ± 0% -37.21% (p=0.100 n=3+3) CacheNoHit/size=4096-4 155B ± 0% 152B ± 0% -1.72% (p=0.100 n=3+3) CacheHit/size=0 5.00B ±100% 152.00B ± 0% +2940.00% (p=0.100 n=3+3) CacheHit/size=0-4 11.0B ± 9% 152.0B ± 0% +1281.82% (p=0.100 n=3+3) CacheHit/size=16 0.00B 0.00B ~ (all equal) CacheHit/size=16-4 0.00B 0.00B ~ (all equal) CacheHit/size=128 0.00B 0.00B ~ (all equal) CacheHit/size=128-4 0.00B 0.00B ~ (all equal) CacheHit/size=512 0.00B 0.00B ~ (all equal) CacheHit/size=512-4 0.00B 0.00B ~ (all equal) CacheHit/size=4096 0.00B 0.00B ~ (all equal) CacheHit/size=4096-4 0.00B 0.00B ~ (all equal) NoopStoragePar 0.00B 0.00B ~ (all equal) NoopStoragePar-4 0.00B 0.00B ~ (all equal) CacheStartupPar 285B ± 0% 285B ± 0% ~ (all equal) CacheStartupPar-4 282B ± 1% 281B ± 0% ~ (p=0.600 n=3+3) CacheNoHitPar/size=0 247B ± 2% 152B ± 0% -38.38% (p=0.100 n=3+3) CacheNoHitPar/size=0-4 161B ± 0% 152B ± 0% -5.59% (p=0.100 n=3+3) CacheNoHitPar/size=16 245B ± 1% 153B ± 0% -37.55% (p=0.100 n=3+3) CacheNoHitPar/size=16-4 161B ± 0% 155B ± 0% -3.93% (p=0.100 n=3+3) CacheNoHitPar/size=128 245B ± 2% 153B ± 0% -37.55% (p=0.100 n=3+3) CacheNoHitPar/size=128-4 162B ± 0% 153B ± 0% -5.36% (p=0.100 n=3+3) CacheNoHitPar/size=512 246B ± 3% 153B ± 0% -37.89% (p=0.100 n=3+3) CacheNoHitPar/size=512-4 161B ± 0% 153B ± 0% -4.97% (p=0.100 n=3+3) CacheNoHitPar/size=4096 244B ± 3% 153B ± 0% -37.38% (p=0.100 n=3+3) CacheNoHitPar/size=4096-4 164B ± 0% 153B ± 0% -6.71% (p=0.100 n=3+3) CacheHitPar/size=0 5.00B ±20% 152.00B ± 0% +2940.00% (p=0.100 n=3+3) CacheHitPar/size=0-4 14.0B ± 7% 152.0B ± 0% +985.71% (p=0.100 n=3+3) CacheHitPar/size=16 0.00B 0.00B ~ (all equal) CacheHitPar/size=16-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=128 0.00B 0.00B ~ (all equal) CacheHitPar/size=128-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=512 0.00B 0.00B ~ (all equal) CacheHitPar/size=512-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096-4 0.00B 0.00B ~ (all equal) NoopStorageProc 0.00B 0.00B ~ (all equal) NoopStorageProc-4 0.00B 0.00B ~ (all equal) CacheStartupProc 285B ± 0% 285B ± 0% ~ (all equal) CacheStartupProc-4 285B ± 0% 285B ± 0% ~ (all equal) CacheNoHitProc/size=0 243B ± 1% 152B ± 0% -37.53% (p=0.100 n=3+3) CacheNoHitProc/size=0-4 195B ± 1% 152B ± 0% -22.05% (p=0.100 n=3+3) CacheNoHitProc/size=16 247B ± 2% 153B ± 0% -37.97% (p=0.100 n=3+3) CacheNoHitProc/size=16-4 194B ± 0% 153B ± 0% -21.27% (p=0.100 n=3+3) CacheNoHitProc/size=128 242B ± 4% 153B ± 0% -36.78% (p=0.100 n=3+3) CacheNoHitProc/size=128-4 193B ± 0% 153B ± 0% -20.86% (p=0.100 n=3+3) CacheNoHitProc/size=512 240B ± 2% 153B ± 0% -36.48% (p=0.100 n=3+3) CacheNoHitProc/size=512-4 190B ± 1% 153B ± 0% -19.33% (p=0.100 n=3+3) CacheNoHitProc/size=4096 245B ± 2% 153B ± 0% -37.55% (p=0.100 n=3+3) CacheNoHitProc/size=4096-4 181B ± 2% 153B ± 0% -15.47% (p=0.100 n=3+3) CacheHitProc/size=0 4.33B ±15% 152.00B ± 0% +3407.69% (p=0.100 n=3+3) CacheHitProc/size=0-4 3.33B ±50% 152.00B ± 0% +4460.00% (p=0.100 n=3+3) CacheHitProc/size=16 0.00B 0.00B ~ (all equal) CacheHitProc/size=16-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=128 0.00B 0.00B ~ (all equal) CacheHitProc/size=128-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=512 0.00B 0.00B ~ (all equal) CacheHitProc/size=512-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096-4 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta NoopStorage 0.00 0.00 ~ (all equal) NoopStorage-4 0.00 0.00 ~ (all equal) CacheStartup 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartup-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHit/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=16 3.33 ±20% 3.00 ± 0% ~ (p=1.000 n=3+3) CacheNoHit/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=128 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=512 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=4096 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHit/size=0 0.00 3.00 ± 0% +Inf% (p=0.100 n=3+3) CacheHit/size=0-4 0.00 3.00 ± 0% +Inf% (p=0.100 n=3+3) CacheHit/size=16 0.00 0.00 ~ (all equal) CacheHit/size=16-4 0.00 0.00 ~ (all equal) CacheHit/size=128 0.00 0.00 ~ (all equal) CacheHit/size=128-4 0.00 0.00 ~ (all equal) CacheHit/size=512 0.00 0.00 ~ (all equal) CacheHit/size=512-4 0.00 0.00 ~ (all equal) CacheHit/size=4096 0.00 0.00 ~ (all equal) CacheHit/size=4096-4 0.00 0.00 ~ (all equal) NoopStoragePar 0.00 0.00 ~ (all equal) NoopStoragePar-4 0.00 0.00 ~ (all equal) CacheStartupPar 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartupPar-4 4.33 ±15% 4.00 ± 0% ~ (p=1.000 n=3+3) CacheNoHitPar/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=16 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=128 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=512 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=4096 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitPar/size=0 0.00 3.00 ± 0% +Inf% (p=0.100 n=3+3) CacheHitPar/size=0-4 0.00 3.00 ± 0% +Inf% (p=0.100 n=3+3) CacheHitPar/size=16 0.00 0.00 ~ (all equal) CacheHitPar/size=16-4 0.00 0.00 ~ (all equal) CacheHitPar/size=128 0.00 0.00 ~ (all equal) CacheHitPar/size=128-4 0.00 0.00 ~ (all equal) CacheHitPar/size=512 0.00 0.00 ~ (all equal) CacheHitPar/size=512-4 0.00 0.00 ~ (all equal) CacheHitPar/size=4096 0.00 0.00 ~ (all equal) CacheHitPar/size=4096-4 0.00 0.00 ~ (all equal) NoopStorageProc 0.00 0.00 ~ (all equal) NoopStorageProc-4 0.00 0.00 ~ (all equal) CacheStartupProc 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheStartupProc-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHitProc/size=0 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=16 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=128 3.33 ±20% 3.00 ± 0% ~ (p=1.000 n=3+3) CacheNoHitProc/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=512 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=4096 3.33 ±20% 3.00 ± 0% ~ (p=1.000 n=3+3) CacheNoHitProc/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitProc/size=0 0.00 3.00 ± 0% +Inf% (p=0.100 n=3+3) CacheHitProc/size=0-4 0.00 3.00 ± 0% +Inf% (p=0.100 n=3+3) CacheHitProc/size=16 0.00 0.00 ~ (all equal) CacheHitProc/size=16-4 0.00 0.00 ~ (all equal) CacheHitProc/size=128 0.00 0.00 ~ (all equal) CacheHitProc/size=128-4 0.00 0.00 ~ (all equal) CacheHitProc/size=512 0.00 0.00 ~ (all equal) CacheHitProc/size=512-4 0.00 0.00 ~ (all equal) CacheHitProc/size=4096 0.00 0.00 ~ (all equal) CacheHitProc/size=4096-4 0.00 0.00 ~ (all equal)
-
- 03 Jan, 2018 1 commit
-
-
Kirill Smelkov authored
Until now we were only GC'ing RCE entries, but OCE entries (top-level cache entry for an OID) were never GC'ed thus allowing cache size to grow infinitely. Even though the average N(allocations) stays the same this change lowers pressure on amount of memory allocated and thus helping avoid some GC speeds things up (see attachment). Notes: 1. Hit*/size=0 increase is probably due to Cache.entryMap going to empty/1-element back and forth constantly. size/0 is not going to happen in practice and so this wat we can accept regression here. ( still NoHit*/size=0 works faster ). 2. HitProc/size=* "regression should be within noise" name old time/op new time/op delta NoopStorage-4 56.6ns ± 1% 56.2ns ± 0% ~ (p=0.079 n=5+5) CacheStartup-4 1.24µs ± 6% 1.28µs ± 9% ~ (p=0.595 n=5+5) CacheNoHit/size=0-4 1.44µs ± 4% 0.93µs ± 2% -35.26% (p=0.008 n=5+5) CacheNoHit/size=16-4 1.43µs ± 5% 0.92µs ± 1% -35.19% (p=0.008 n=5+5) CacheNoHit/size=128-4 1.45µs ± 3% 0.94µs ± 1% -35.03% (p=0.008 n=5+5) CacheNoHit/size=512-4 1.44µs ± 4% 0.97µs ± 2% -32.64% (p=0.008 n=5+5) CacheNoHit/size=4096-4 1.45µs ± 2% 1.07µs ± 0% -25.85% (p=0.008 n=5+5) CacheHit/size=0-4 131ns ± 2% 276ns ±22% +110.99% (p=0.008 n=5+5) CacheHit/size=16-4 122ns ± 1% 121ns ± 1% ~ (p=0.079 n=5+5) CacheHit/size=128-4 126ns ± 2% 125ns ± 1% ~ (p=0.563 n=5+5) CacheHit/size=512-4 127ns ± 1% 126ns ± 0% ~ (p=0.095 n=5+4) CacheHit/size=4096-4 128ns ± 0% 128ns ± 0% ~ (p=0.556 n=5+4) NoopStoragePar-4 30.6ns ± 4% 31.2ns ±10% ~ (p=0.690 n=5+5) CacheStartupPar-4 1.44µs ± 5% 1.43µs ± 3% ~ (p=0.690 n=5+5) CacheNoHitPar/size=0-4 1.62µs ± 4% 1.04µs ± 1% -35.76% (p=0.008 n=5+5) CacheNoHitPar/size=16-4 1.65µs ± 4% 1.05µs ± 1% -36.39% (p=0.008 n=5+5) CacheNoHitPar/size=128-4 1.64µs ± 5% 1.05µs ± 1% -35.84% (p=0.008 n=5+5) CacheNoHitPar/size=512-4 1.62µs ± 3% 1.08µs ± 1% -33.10% (p=0.008 n=5+5) CacheNoHitPar/size=4096-4 1.68µs ± 1% 1.18µs ± 0% -29.44% (p=0.008 n=5+5) CacheHitPar/size=0-4 215ns ± 0% 383ns ± 2% +78.23% (p=0.008 n=5+5) CacheHitPar/size=16-4 214ns ± 2% 214ns ± 0% ~ (p=0.786 n=5+5) CacheHitPar/size=128-4 210ns ± 0% 209ns ± 0% ~ (p=0.079 n=5+5) CacheHitPar/size=512-4 207ns ± 0% 206ns ± 0% -0.48% (p=0.008 n=5+5) CacheHitPar/size=4096-4 204ns ± 0% 202ns ± 0% -0.98% (p=0.000 n=5+4) NoopStorageProc-4 31.4ns ± 7% 33.7ns ± 5% ~ (p=0.151 n=5+5) CacheStartupProc-4 1.13µs ± 5% 1.12µs ± 3% ~ (p=0.690 n=5+5) CacheNoHitProc/size=0-4 1.12µs ± 5% 0.62µs ± 1% -44.52% (p=0.008 n=5+5) CacheNoHitProc/size=16-4 1.14µs ± 6% 0.63µs ± 1% -45.14% (p=0.008 n=5+5) CacheNoHitProc/size=128-4 1.06µs ± 5% 0.64µs ± 2% -40.12% (p=0.008 n=5+5) CacheNoHitProc/size=512-4 1.14µs ±11% 0.69µs ± 4% -39.87% (p=0.008 n=5+5) CacheNoHitProc/size=4096-4 1.14µs ± 9% 0.68µs ± 2% -40.21% (p=0.008 n=5+5) CacheHitProc/size=0-4 56.5ns ± 7% 84.6ns ±14% +49.66% (p=0.008 n=5+5) CacheHitProc/size=16-4 55.8ns ± 0% 62.0ns ± 6% +11.03% (p=0.008 n=5+5) CacheHitProc/size=128-4 56.6ns ± 0% 60.9ns ± 4% +7.63% (p=0.008 n=5+5) CacheHitProc/size=512-4 57.3ns ± 0% 64.1ns ± 7% +11.83% (p=0.016 n=4+5) CacheHitProc/size=4096-4 61.6ns ± 1% 69.7ns ± 5% +13.29% (p=0.008 n=5+5) name old alloc/op new alloc/op delta NoopStorage-4 0.00B 0.00B ~ (all equal) CacheStartup-4 269B ± 0% 285B ± 0% +5.95% (p=0.008 n=5+5) CacheNoHit/size=0-4 225B ± 0% 153B ± 0% -32.12% (p=0.008 n=5+5) CacheNoHit/size=16-4 225B ± 0% 153B ± 0% -32.00% (p=0.029 n=4+4) CacheNoHit/size=128-4 225B ± 1% 153B ± 0% -31.76% (p=0.008 n=5+5) CacheNoHit/size=512-4 225B ± 1% 154B ± 0% -31.50% (p=0.008 n=5+5) CacheNoHit/size=4096-4 224B ± 0% 155B ± 0% -30.80% (p=0.008 n=5+5) CacheHit/size=0-4 0.00B 13.40B ±42% +Inf% (p=0.008 n=5+5) CacheHit/size=16-4 0.00B 0.00B ~ (all equal) CacheHit/size=128-4 0.00B 0.00B ~ (all equal) CacheHit/size=512-4 0.00B 0.00B ~ (all equal) CacheHit/size=4096-4 0.00B 0.00B ~ (all equal) NoopStoragePar-4 0.00B 0.00B ~ (all equal) CacheStartupPar-4 267B ± 0% 282B ± 1% +5.67% (p=0.016 n=4+5) CacheNoHitPar/size=0-4 232B ± 1% 162B ± 1% -30.11% (p=0.008 n=5+5) CacheNoHitPar/size=16-4 228B ± 1% 161B ± 0% -29.21% (p=0.008 n=5+5) CacheNoHitPar/size=128-4 229B ± 1% 162B ± 0% -29.43% (p=0.008 n=5+5) CacheNoHitPar/size=512-4 228B ± 1% 162B ± 1% -28.86% (p=0.008 n=5+5) CacheNoHitPar/size=4096-4 224B ± 0% 166B ± 0% -26.02% (p=0.000 n=5+4) CacheHitPar/size=0-4 1.00B ± 0% 13.60B ± 4% +1260.00% (p=0.008 n=5+5) CacheHitPar/size=16-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=128-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=512-4 0.00B 0.00B ~ (all equal) CacheHitPar/size=4096-4 0.00B 0.00B ~ (all equal) NoopStorageProc-4 0.00B 0.00B ~ (all equal) CacheStartupProc-4 269B ± 0% 285B ± 0% +5.95% (p=0.008 n=5+5) CacheNoHitProc/size=0-4 240B ± 0% 194B ± 0% -19.17% (p=0.000 n=5+4) CacheNoHitProc/size=16-4 240B ± 2% 194B ± 1% -19.38% (p=0.008 n=5+5) CacheNoHitProc/size=128-4 241B ± 0% 193B ± 1% -20.00% (p=0.016 n=4+5) CacheNoHitProc/size=512-4 241B ± 1% 188B ± 2% -22.06% (p=0.008 n=5+5) CacheNoHitProc/size=4096-4 240B ± 1% 179B ± 0% -25.52% (p=0.008 n=5+5) CacheHitProc/size=0-4 0.00B 3.60B ±17% +Inf% (p=0.008 n=5+5) CacheHitProc/size=16-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=128-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=512-4 0.00B 0.00B ~ (all equal) CacheHitProc/size=4096-4 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta NoopStorage-4 0.00 0.00 ~ (all equal) CacheStartup-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHit/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHit/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHit/size=0-4 0.00 0.00 ~ (all equal) CacheHit/size=16-4 0.00 0.00 ~ (all equal) CacheHit/size=128-4 0.00 0.00 ~ (all equal) CacheHit/size=512-4 0.00 0.00 ~ (all equal) CacheHit/size=4096-4 0.00 0.00 ~ (all equal) NoopStoragePar-4 0.00 0.00 ~ (all equal) CacheStartupPar-4 4.00 ± 0% 4.00 ± 0% ~ (all equal) CacheNoHitPar/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitPar/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitPar/size=0-4 0.00 0.00 ~ (all equal) CacheHitPar/size=16-4 0.00 0.00 ~ (all equal) CacheHitPar/size=128-4 0.00 0.00 ~ (all equal) CacheHitPar/size=512-4 0.00 0.00 ~ (all equal) CacheHitPar/size=4096-4 0.00 0.00 ~ (all equal) NoopStorageProc-4 0.00 0.00 ~ (all equal) CacheStartupProc-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) CacheNoHitProc/size=0-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=16-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=128-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=512-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheNoHitProc/size=4096-4 3.00 ± 0% 3.00 ± 0% ~ (all equal) CacheHitProc/size=0-4 0.00 0.00 ~ (all equal) CacheHitProc/size=16-4 0.00 0.00 ~ (all equal) CacheHitProc/size=128-4 0.00 0.00 ~ (all equal) CacheHitProc/size=512-4 0.00 0.00 ~ (all equal) CacheHitProc/size=4096-4 0.00 0.00 ~ (all equal)
-
- 31 Dec, 2017 2 commits
-
-
Kirill Smelkov authored
Currently RCE.ready is chan(struct{}) and is closed to indicate 1->N that loading of an RCE has finished. There is a drawback however with using channel for this function: making RCE.ready allocates and thus adds pressure on GC. We can use sync.WaitGroup functionality for this purpose of notifying that something is ready. Usually sync.WaitGroup is used in N->1 way, but as it also correctly works in N->M mode we can use in in our scenario where 1 loading goroutine notifies N RCE waiters. Checking already closed channel was also found to checking already done sync.WaitGroup. Reason is that sync.WaitGroup is only a light wrapper around runtime.sema, but channel is much more heavyweight. Speedup with this patch: name old time/op new time/op delta NoopStorage-4 56.2ns ± 0% 57.1ns ± 2% ~ (p=0.079 n=5+5) CacheStartup-4 1.34µs ± 7% 1.22µs ± 3% -8.68% (p=0.008 n=5+5) CacheNoHit/size=0-4 1.67µs ± 4% 1.42µs ± 4% -15.08% (p=0.008 n=5+5) CacheNoHit/size=16-4 1.73µs ± 7% 1.42µs ± 4% -17.83% (p=0.008 n=5+5) CacheNoHit/size=128-4 1.68µs ± 5% 1.42µs ± 5% -15.65% (p=0.008 n=5+5) CacheNoHit/size=512-4 1.62µs ± 4% 1.43µs ± 5% -12.18% (p=0.008 n=5+5) CacheNoHit/size=4096-4 1.69µs ± 2% 1.44µs ± 0% -15.03% (p=0.008 n=5+5) CacheHit/size=0-4 158ns ± 1% 130ns ± 2% -17.47% (p=0.008 n=5+5) CacheHit/size=16-4 147ns ± 2% 124ns ± 7% -16.01% (p=0.008 n=5+5) CacheHit/size=128-4 149ns ± 0% 126ns ± 5% -15.30% (p=0.016 n=4+5) CacheHit/size=512-4 151ns ± 0% 126ns ± 1% -16.56% (p=0.000 n=4+5) CacheHit/size=4096-4 154ns ± 0% 129ns ± 2% -16.49% (p=0.008 n=5+5) NoopStoragePar-4 32.2ns ± 9% 30.4ns ± 5% ~ (p=0.175 n=5+5) CacheStartupPar-4 1.64µs ± 2% 1.42µs ± 4% -13.31% (p=0.008 n=5+5) CacheNoHitPar/size=0-4 1.88µs ± 2% 1.63µs ± 3% -13.33% (p=0.008 n=5+5) CacheNoHitPar/size=16-4 1.87µs ± 1% 1.62µs ± 2% -13.33% (p=0.008 n=5+5) CacheNoHitPar/size=128-4 1.90µs ± 3% 1.64µs ± 2% -13.68% (p=0.008 n=5+5) CacheNoHitPar/size=512-4 1.86µs ± 3% 1.62µs ± 1% -12.91% (p=0.008 n=5+5) CacheNoHitPar/size=4096-4 1.87µs ± 3% 1.70µs ± 3% -9.21% (p=0.008 n=5+5) CacheHitPar/size=0-4 233ns ± 0% 217ns ± 3% -6.87% (p=0.016 n=4+5) CacheHitPar/size=16-4 228ns ± 2% 225ns ± 2% ~ (p=0.119 n=5+5) CacheHitPar/size=128-4 232ns ± 4% 214ns ± 1% -7.92% (p=0.008 n=5+5) CacheHitPar/size=512-4 228ns ± 1% 210ns ± 1% -7.82% (p=0.008 n=5+5) CacheHitPar/size=4096-4 226ns ± 2% 209ns ± 2% -7.54% (p=0.008 n=5+5) NoopStorageProc-4 34.1ns ± 6% 34.9ns ±18% ~ (p=0.690 n=5+5) CacheStartupProc-4 1.14µs ± 8% 1.12µs ± 4% ~ (p=0.802 n=5+5) CacheNoHitProc/size=0-4 1.32µs ± 4% 1.10µs ± 6% -16.92% (p=0.008 n=5+5) CacheNoHitProc/size=16-4 1.32µs ± 2% 1.14µs ± 7% -13.54% (p=0.008 n=5+5) CacheNoHitProc/size=128-4 1.30µs ± 6% 1.07µs ±10% -17.99% (p=0.008 n=5+5) CacheNoHitProc/size=512-4 1.26µs ± 5% 1.09µs ± 5% -13.47% (p=0.008 n=5+5) CacheNoHitProc/size=4096-4 1.27µs ± 3% 1.09µs ± 7% -14.55% (p=0.008 n=5+5) CacheHitProc/size=0-4 69.5ns ± 6% 56.4ns ±10% -18.88% (p=0.008 n=5+5) CacheHitProc/size=16-4 75.1ns ± 6% 55.8ns ± 1% -25.65% (p=0.008 n=5+5) CacheHitProc/size=128-4 74.5ns ± 4% 57.1ns ± 1% -23.31% (p=0.008 n=5+5) CacheHitProc/size=512-4 69.4ns ± 1% 58.1ns ± 2% -16.27% (p=0.008 n=5+5) CacheHitProc/size=4096-4 93.3ns ± 5% 63.2ns ± 4% -32.25% (p=0.008 n=5+5) name old allocs/op new allocs/op delta NoopStorage-4 0.00 0.00 ~ (all equal) CacheStartup-4 6.00 ± 0% 5.00 ± 0% -16.67% (p=0.008 n=5+5) CacheNoHit/size=0-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHit/size=16-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHit/size=128-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHit/size=512-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHit/size=4096-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheHit/size=0-4 0.00 0.00 ~ (all equal) CacheHit/size=16-4 0.00 0.00 ~ (all equal) CacheHit/size=128-4 0.00 0.00 ~ (all equal) CacheHit/size=512-4 0.00 0.00 ~ (all equal) CacheHit/size=4096-4 0.00 0.00 ~ (all equal) NoopStoragePar-4 0.00 0.00 ~ (all equal) CacheStartupPar-4 5.00 ± 0% 4.00 ± 0% -20.00% (p=0.008 n=5+5) CacheNoHitPar/size=0-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitPar/size=16-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitPar/size=128-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitPar/size=512-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitPar/size=4096-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheHitPar/size=0-4 0.00 0.00 ~ (all equal) CacheHitPar/size=16-4 0.00 0.00 ~ (all equal) CacheHitPar/size=128-4 0.00 0.00 ~ (all equal) CacheHitPar/size=512-4 0.00 0.00 ~ (all equal) CacheHitPar/size=4096-4 0.00 0.00 ~ (all equal) NoopStorageProc-4 0.00 0.00 ~ (all equal) CacheStartupProc-4 6.00 ± 0% 5.00 ± 0% -16.67% (p=0.008 n=5+5) CacheNoHitProc/size=0-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitProc/size=16-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitProc/size=128-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitProc/size=512-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheNoHitProc/size=4096-4 4.00 ± 0% 3.00 ± 0% -25.00% (p=0.008 n=5+5) CacheHitProc/size=0-4 0.00 0.00 ~ (all equal) CacheHitProc/size=16-4 0.00 0.00 ~ (all equal) CacheHitProc/size=128-4 0.00 0.00 ~ (all equal) CacheHitProc/size=512-4 0.00 0.00 ~ (all equal) CacheHitProc/size=4096-4 0.00 0.00 ~ (all equal)
-
Kirill Smelkov authored
So that we can measure how every change affects cache performance. Added Cache.Close() along the way, since if without it, there was no way to release gcmain goroutine stack and with many benchmarks run this was causing out of memory.
-
- 26 Dec, 2017 1 commit
-
-
Kirill Smelkov authored
By extending loadRCE to accept how much the caller wants returned rce.buf to be xincref'ed we can teach it to do the incref consistently under rce.parent lock either itself, or schedule the incref to loadRCE to be done after rce is loaded right before it is exposed to outside world (rce waiters + gc).
-
- 21 Dec, 2017 1 commit
-
-
Kirill Smelkov authored
which is showing itself as e.g. ---- 8< ---- panic: Buf: refcnt < 0 goroutine 7 [running]: lab.nexedi.com/kirr/neo/go/zodb.(*Buf).Release(0xc42000db40) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/buffer.go:107 +0x116 lab.nexedi.com/kirr/neo/go/zodb.(*Buf).XRelease(0xc42000db40) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/buffer.go:136 +0x3a lab.nexedi.com/kirr/neo/go/zodb.(*Cache).gc(0xc4200101c0) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/cache.go:488 +0x22f lab.nexedi.com/kirr/neo/go/zodb.(*Cache).gcmain(0xc4200101c0) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/cache.go:451 +0x3f created by lab.nexedi.com/kirr/neo/go/zodb.NewCache /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/cache.go:123 +0x126 ---- 8< ---- during zhash.go -prefetch run. This patch adds the test for this bug and explains the problem in detail there. The test currently fails: --- FAIL: TestCache (0.01s) panic: Buf.Incref: refcnt was < 1 [recovered] panic: Buf.Incref: refcnt was < 1 goroutine 18 [running]: testing.tRunner.func1(0xc4240ce000) /home/kirr/src/tools/go/go/src/testing/testing.go:711 +0x2d2 panic(0x588a20, 0x5ebe70) /home/kirr/src/tools/go/go/src/runtime/panic.go:491 +0x283 lab.nexedi.com/kirr/neo/go/zodb.(*Buf).Incref(0xc4200c2460) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/buffer.go:134 +0x58 lab.nexedi.com/kirr/neo/go/zodb.(*Buf).XIncref(0xc4200c2460) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/buffer.go:148 +0x3a lab.nexedi.com/kirr/neo/go/zodb.(*Cache).Load(0xc4200ca000, 0x6ab1a0, 0xc42001a148, 0x4, 0x1, 0x10, 0xc4200bf2e0, 0x10, 0x10) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/cache.go:168 +0x1c7 lab.nexedi.com/kirr/neo/go/zodb.TestCache.func2(0x4, 0x1, 0xc4200c2440, 0x4, 0x0, 0x0) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/cache_test.go:155 +0xcc lab.nexedi.com/kirr/neo/go/zodb.TestCache(0xc4240ce000) /home/kirr/src/neo/src/lab.nexedi.com/kirr/neo/go/zodb/cache_test.go:579 +0x4eb5 testing.tRunner(0xc4240ce000, 0x5d4728) /home/kirr/src/tools/go/go/src/testing/testing.go:746 +0xd0 created by testing.(*T).Run /home/kirr/src/tools/go/go/src/testing/testing.go:789 +0x2de exit status 2
-
- 20 Dec, 2017 1 commit
-
-
Kirill Smelkov authored
- IStorageDriver implements only raw access to a particular storage - Prefetching logic + other common bits are implemented byt zodb package infrastructure (e.g. Prefetch() and URL()) and access to them is provided by IStorage. It currently regresses plain load speed: name old time/object new time/object delta dataset:wczblk1-8 deco/fs1/zhash.py 15.4µs ± 4% 15.2µs ± 2% ~ (p=0.159 n=4+5) deco/fs1/zhash.py-P16 116µs ±17% 121µs ±21% ~ (p=0.407 n=16+16) deco/fs1/zhash.go 1.50µs ± 0% 5.30µs ± 0% +253.33% (p=0.016 n=5+4) deco/fs1/zhash.go+prefetch128 4.08µs ± 5% 4.20µs ± 2% ~ (p=0.143 n=5+5) deco/fs1/zhash.go-P16 4.77µs ±179% 33.85µs ±54% +610.14% (p=0.000 n=15+16) dataset:prod1-1024 deco/fs1/zhash.py 12.2µs ± 1% 12.4µs ± 4% ~ (p=0.540 n=4+5) deco/fs1/zhash.py-P16 102µs ±12% 101µs ±16% ~ (p=0.802 n=16+16) deco/fs1/zhash.go 1.10µs ± 0% 2.66µs ± 2% +141.82% (p=0.008 n=5+5) deco/fs1/zhash.go+prefetch128 2.70µs ± 0% 2.67µs ± 3% ~ (p=1.000 n=4+4) deco/fs1/zhash.go-P16 3.20µs ±138% 17.25µs ±42% +439.06% (p=0.000 n=16+16) will try to investigate what is going on inside.
-
- 18 Dec, 2017 1 commit
-
-
Kirill Smelkov authored
also: - DataTid -> DataTidHint + 0 if there is no such hint.
-
- 07 Nov, 2017 1 commit
-
-
Kirill Smelkov authored
-
- 25 Oct, 2017 1 commit
-
-
Kirill Smelkov authored
-
- 12 Sep, 2017 1 commit
-
-
Kirill Smelkov authored
-
- 29 Aug, 2017 1 commit
-
-
Kirill Smelkov authored
-
- 25 Aug, 2017 13 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
- 24 Aug, 2017 4 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-