Live data from Hacker News

Faster – Fast key-value store from Microsoft Research

github.com

51–60 of 84 posts

Re: Faster – Fast key-value store from Microsoft Research

#51

Earlier quoted context omitted.

Microsoft tends to choose bad names: See Visual Studio Code, the most ungooglable name ever.

What are your thoughts on how "Googleable" these product names are: ".NET" and "Azure Functions"

Google makes it work. But then there are C# and F#, which are Googleable but fail on probably 99.9% of other sites and software with search functionality, including some of Microsoft's own products (e.g. NuGet).

Re: Faster – Fast key-value store from Microsoft Research

#52

"What differentiates FASTER are its cache-optimized index that achieves very high performance — up to 160 million operations per second when data fits in memory;" I really dislike when papers make performance claims like this in the introduction. That "160 million" number is so meaningless at face value because everything from the runtime environment to the hardware is going to play a huge role in ops. I rather see h…

So 160 million packets per second?

Re: Faster – Fast key-value store from Microsoft Research

#53
post #15

If you want concrete benchmarks, they compare to RocksDB and Redis around page 10 of their academic paper. ( https://www.microsoft.com/en-us/research/uploads/prod/2018/0... ) TL;DR: I find their choice of benchmarks to be very convenient. They tested on in-memory 8 byte payloads and were way faster than RocksDB and Redis. They then tested against only different configurations of themselves for configurations that hit…

> They then tested against only different configurations of themselves for configurations that hit disk. In the case of Redis, AFAIK it can't support larger than memory use cases, right? And in fact they do compare to RocksDB for larger-than-memory, see Fig 10. Granted, it could be more detailed, but I think it makes their point.

They sure hid figure 10! Unexpected section, bad header choice, etc.

Re: Faster – Fast key-value store from Microsoft Research

#54
post #47
post #16

Earlier quoted context omitted.

c++ part is one liner intrinsic which may be supported directly with new .net and several io methods which would be heavy on pinvoke calls like 5 per method if in c#, but these are very simple. so c++ part could be done in c and easily ported to unix. i guess c# should allow for pinvoke strategy like in lua to replace c++ more.

What kind of different strategies did you have in mind? So far as I know, P/Invoke already tries to be as low overhead as possible - e.g. primitive types and blittable structs are just passed as is, with no conversions. The recently added Span is also special-cased for P/Invoke.

> So far as I know, P/Invoke already tries to be as low overhead as possible

As low as possible maybe, but there's lots of limiting factors with P/Invoke, such as:

- They are not inlined

- Registers need to be saved pessimistically

- The state at the point of the call is visible to observers outside of code the compiler controls so options for scheduling are constrained

- Objects need to be materialised

- All parameter values need to be available even if they aren't actually used

- Objects passed have to be pinned or given an indirect handle

- The caller has to be in a safepoint so GC can keep running

- The compiler has to juggle things into place for the C ABI, where it may normally lay things out differently

- etc

Going through a P/Invoke call is a whole inconvenient circus compared to an intrinsic.

Re: Faster – Fast key-value store from Microsoft Research

#57
post #56

I have seen plenty of local-machine fast key-value stores, such as LevelDB (By Google), or RocksDB (By Facebook), but I have a hard time imagining what they are for. What are the use cases for such a library?

Imagine you want to run a service. This service needs to maintain some intermediate state. This state might’ve frequently read. There might be little value in persisting this state. Also, your service is used by many users, so this state can grow to be pretty big. For example, contents of a shopping cart.

One solution is to maintain such state in some key-value store. Different functions of your service can query this state within the data center and never have to suffer disk delays - which are often much longer than the internal network of your data center.

Re: Faster – Fast key-value store from Microsoft Research

#58
post #56

I have seen plenty of local-machine fast key-value stores, such as LevelDB (By Google), or RocksDB (By Facebook), but I have a hard time imagining what they are for. What are the use cases for such a library?

Imagine you want to run a service. This service needs to maintain some intermediate state. This state might’ve frequently read. There might be little value in persisting this state. Also, your service is used by many users, so this state can grow to be pretty big. For example, contents of a shopping cart. One solution is to maintain such state in some key-value store. Different functions of your service can query thi…

I think it's an in-memory embedded library, so why not just use a global variable map/dictionary?

Re: Faster – Fast key-value store from Microsoft Research

#59

"What differentiates FASTER are its cache-optimized index that achieves very high performance — up to 160 million operations per second when data fits in memory;" I really dislike when papers make performance claims like this in the introduction. That "160 million" number is so meaningless at face value because everything from the runtime environment to the hardware is going to play a huge role in ops. I rather see h…

The comment about being two orders of magnitude faster than other stores is also pretty annoying. Many systems perform at most 1 disk access for data sets with working sets 100’s of times larger than DRAM, and that’s essentially optimal for those workloads.

It would be nice if they said what workload patterns they’ve optimized for, and which ones they perform poorly on.

Re: Faster – Fast key-value store from Microsoft Research

#60

The VLDB reviewers of their paper [1] must not have thought much of it because it's accepted as a short paper, which is not a great signal. No comment on the quality of the work though, as I only just started reading it. [1] https://www.microsoft.com/en-us/research/uploads/prod/2018/0...

So this was a demo paper, backed by their SIGMOD paper [2]. Interesting work. Their Epoch Protection kind of reminds me of the functionality provided by RCUs [3]. It is unfortunate that they do not provide comparisons with other hash maps in [2], opting for end-to-end comparisons with other systems, but that doesn't take away from their results.

[2] https://www.microsoft.com/en-us/research/uploads/prod/2018/0... [3] https://www.kernel.org/doc/Documentation/RCU/whatisRCU.txt

Post reply on HN