Badrish Chandramouli

166 posts

Badrish Chandramouli

Badrish Chandramouli

@badrishc

Partner research manager in the data systems group at Microsoft Research. Interests: storage, streaming, analytics, key-value stores, ML for systems.

Redmond, WA Entrou em Nisan 2009
290 Seguindo1.5K Seguidores
Non-Linear
Non-Linear@nonlinear_james·
@badrishc @_neonsunset It has *some* lua support. It, for instance, is not far enough along to work with the DistributedLock library.
English
1
0
0
48
Non-Linear
Non-Linear@nonlinear_james·
@_neonsunset It needs lua because there are a ton of things that require it so can’t replace redis with it yet.
English
2
0
0
195
Badrish Chandramouli retweetou
Marc Gravell
Marc Gravell@marcgravell·
garnet-server, Microsoft's RESP (Redis-alike) server built on the "FASTER" tech is now available as a .NET global tool, making it one line to install it, then just "garnet-server" to run it. Very nice for RESP geeks: nuget.org/packages/garne…
English
9
51
286
19.2K
Badrish Chandramouli
Badrish Chandramouli@badrishc·
At #VLDB2024, check our Bf-Tree, our high-perf B-Tree design optimized for small key-values. It uses a mini-page abstraction to cache reads/writes and a variable-length buffer pool to maintain them. See vldb.org/pvldb/vol17/p3… and attend session C3 at 3:30pm today to learn more!
English
2
12
105
15.4K
Badrish Chandramouli
Badrish Chandramouli@badrishc·
@FilasienoF @sunbains Thanks! Your comment re: relevance to paged structures is spot on. The Bf-Tree was inspired by our prior work in the other direction: FASTER's hybrid log optimizes record-granularity paging for external hash KV. We wanted to get similar benefits for page-oriented B-Tree designs.
English
1
1
1
157
Fabio Filasieno ❄️
Fabio Filasieno ❄️@FilasienoF·
As you underlined it is a interesting set of changes “inspired” by many other papers. Beating a heavily optimised BTree at point queries AND an optimised LSMTree in write throughput is not easy. As you mentioned the key change is in the buffer manager/leaf page, but the data structure doesn’t change a lot as you mentioned; this is one of the merits of the paper. I find interesting that you could apply the same set of techniques to other traditional paged data structures (what if we apply the same techniques to an external hash table?); it makes you think many “what if … ?”. But again very bald claims.
English
1
1
0
210
Badrish Chandramouli
Badrish Chandramouli@badrishc·
@jodydonetti @marcgravell @davidfowl Related to cold start -- FASTER and Garnet support checkpoint/recovery so you could have your cache instantly rehydrate after a process failure. Not sure IDistributedCache supports this, but we have seen this to be useful in other scenarios.
English
1
0
2
64
Jody Donetti
Jody Donetti@jodydonetti·
@marcgravell @davidfowl That would be oh-so-interesting to explore, and it would completely annihilate the cold start problem in one sweet move! But I’m wondering about paying the (de)serialization price for every operation. What I’m thinking about from some time instead is…
English
3
0
1
272
Badrish Chandramouli
Badrish Chandramouli@badrishc·
@marcgravell @jodydonetti @davidfowl You can use FASTER to store arbitrary live C# objects directly as well, using the GenericAllocator. That will allow reading and mutating without cost. You will however pay the serialization cost when spilling to disk, or reading from disk.
English
1
0
3
73
Marc Gravell
Marc Gravell@marcgravell·
@jodydonetti @davidfowl Deserialize per operation: yeah, that's a complex one because I'm also torn on the topic of "not obviously immutable types" / "defensive copies"; current plan is to observe [ImmutableObject] to avoid per-fetch deserialize, but indeed: can't use FASTER to store live objects.
English
1
0
2
234
Badrish Chandramouli retweetou
Pop Catalin
Pop Catalin@PopCatalin·
@davidfowl Damn, Garnet sitting on top of performance benchmarks when compared to Redis, KeyDb and Dragonfly ... If this doesn't scream Microsoft is dead serious about performance of .Net Core, I don't know what does. microsoft.com/en-us/research…
English
0
9
47
4.9K
Badrish Chandramouli
Badrish Chandramouli@badrishc·
@neuecc @jodydonetti @marcgravell Yes, the performance with Garnet custom commands would be extremely high for this use case. Second best would be multi/exec (which by design incurs a lot of repeated parsing and bookkeeping in the critical path). And don't get me started on Lua ... :)
English
1
0
2
74
neuecc
neuecc@neuecc·
@jodydonetti @marcgravell Instead of LUA, would custom commands work? (This article is in Japanese, but for reference: neue.cc/2024/03/19_Gar… ). It would be limited to self-hosting, but the performance seems like it would be better than LUA.
English
3
0
2
1.3K
Jody Donetti
Jody Donetti@jodydonetti·
Let's see if we can make the new Garnet usable as an IDistributedCache implementation. This would skyrocket its usage and allow it to be used from dependent projects, like FusionCache 😬 cc @marcgravell github.com/microsoft/garn…
English
2
0
29
9.9K
Badrish Chandramouli
Badrish Chandramouli@badrishc·
@marcgravell @jsneedles @jodydonetti @neuecc The fact that you used the serialization API means there is still a lot of gas left in the tank for improvement. For blittable keys and values, we have versions that do not require serializers at all. And those code paths are way faster, particularly for disk. This is exciting!
English
1
0
2
88
Marc Gravell
Marc Gravell@marcgravell·
@jsneedles @jodydonetti @neuecc todo: I want to overhaul the serialization code; also, I need to feed back to the FASTER folks that their serialization API is "old school" - could do with IBufferWriter<byte>/ReadOnlySequence<byte> support
English
2
1
7
953