You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Performance analysis of VV benchmark tests(#1150 ) revealed significant time and memory consumption in Version Vector Min/Max operations. This needs optimization to improve overall performance.
Used during SyncClocks when applying remote changes
Performance degrades with:
Increasing number of clients
Accumulating changes
Note: Current benchmark tests disable snapshots during attach
Steps to Reproduce
Run benchmark with profiling:
go test -tags bench -benchmem -bench=BenchmarkVersionVector ./test/bench -memprofile=mem.prof -cpuprofile=cpu.prof
Analyze profile:
# View single profile
go tool pprof [file path]
(pprof) web # Requires graphviz package# Compare two profiles
go tool pprof -base mem-v057.prof mem.prof
Profile data is available in the attached compressed files for reference. Test conducted with 1000 clients. prof.zip
Why is this needed:
To enhance performance during large-scale concurrent editing with multiple clients
The text was updated successfully, but these errors were encountered:
What would you like to be added:
Performance analysis of VV benchmark tests(#1150 ) revealed significant time and memory consumption in Version Vector Min/Max operations. This needs optimization to improve overall performance.
Current Performance Analysis
UpdateAndFindMinSyncedVersionVector
: 20.48s (33.53%)ApplyChanges
: 9.83s (16.09%)runtime.gcMarkWorker
: 13.30s (21.81%)UpdateAndFindMinSyncedVersionVector
>VersionVector Min
: 29,524.84MB (58.10%)ApplyChangePack
>VersionVector Max
: 14,841.02MB (29.20%)1. MinVV Calculation (PushPull Operation)
yorkie/server/backend/database/mongo/client.go
Lines 1265 to 1282 in 2fa676d
2. MaxVV Calculation (Attach Operation)
Steps to Reproduce
go test -tags bench -benchmem -bench=BenchmarkVersionVector ./test/bench -memprofile=mem.prof -cpuprofile=cpu.prof
Why is this needed:
To enhance performance during large-scale concurrent editing with multiple clients
The text was updated successfully, but these errors were encountered: