Comments (10)
Hey, @derekperkins Could you please share your configuration? I particularly need to learn the following fields:
- ReplicaCount
- ReadQuorum
- ReadRepair
from olric.
I'm not setting any of those explicitly, so they should all be 1 from the lan
defaults
cfg := config.New("lan") // default configuration
cfg.ServiceDiscovery = map[string]any{
"plugin": k8sDisc,
}
cfg.ReplicationMode = config.AsyncReplicationMode
cfg.LogLevel = "WARN"
cfg.LogVerbosity = 1
cfg.DMaps.Custom[name] = config.DMap{
EvictionPolicy: config.LRUEviction,
MaxIdleDuration: 24 * time.Hour,
MaxInuse: 50_000_000,
}
from olric.
FWIW, we're caching immutable objects, so stale data isn't possible. We're strictly focused on performance, and can set any knobs to whatever you suggest
from olric.
It may be related to #201. Initially, I thought we could add an option to disable the Last-Write-Wins policy but ReplicaCount
is 1 by default. So it's already useless for your configuration.
from olric.
I wasn't doing any Put()
calls in the pipeline, just Get()
, but there would have been a lot of concurrent Put
calls happening outside the Pipeline
from olric.
And after Exec()
returns, Result()
isn't making any network calls, correct? Those should have all been resolved inside Exec
from olric.
And after Exec() returns, Result() isn't making any network calls, correct? Those should have all been resolved inside Exec
That's correct.
I checked the code but I couldn't find any reason why cache misses are slow while hits are quite fast. Are cache misses slow with the normal DMap API? The related function is here:
Line 276 in 9c91883
from olric.
Are cache misses slow with the normal DMap API?
I don't believe so. We first implemented olric without using pipelines or goroutines for Get
calls, which did cause a slowdown (deployment happened at metric spike) compared to the previous local only cache (ristretto), but nothing unexpected for ~100 sequential network calls.
It stabilized at those p-values until we deployed with pipelines (deployment at metric spike), which sent latency through the roof, even though it should have been fundamentally making the same ~100 requests with concurrency of 1.
from olric.
I just redeployed v0.5.1 and it shows massive improvements over the original trace above, but still is surprisingly slow on cache misses. They aren't taking 100ms now, but calling Result()
on cache misses is taking ~1 ms, where cache hits take only ~0.02 ms
Long pipeline.Exec time, almost all cache hits
Short pipeline.Exec time, almost all cache misses
from olric.
Never mind, that was my bad. I wasn't ignoring the KeyNotFound
error, so that handling was taking extra long, skewing the results. 😬
from olric.
Related Issues (20)
- pipeline panic HOT 4
- Unbounded memory growth / leak in pipelines HOT 4
- panic: runtime error: integer divide by zero in setLRUEvictionStats HOT 1
- panic on args HOT 1
- Panic on start when BindAddr cannot be resolved
- Data race when getting stats in embedded mode
- remove dtopic listener didn't work well in cluster mode
- DNS based service discovery HOT 8
- Fast restart will cause data lost HOT 1
- Flaky integration test
- Using olric from PHP programs HOT 3
- storage overhead per object HOT 3
- Allow developer to pass his/her logging framework of choice HOT 9
- Use of DM Lock with Embedded Member HOT 2
- Failed to fetch the latest version of the routing table
- Can't reliably get PubSub - "no available client found"
- Data race in cluster setup using Olric v0.5.5 HOT 1
- Performance issues for production usage HOT 3
- Entire cluster fail to serve requests when one pod fails to restart with DMap creation operation timeout HOT 2
- Potential lock contention: Coordinator is not able to publish routing table to new node which causes it fails to be bootstrapped
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from olric.