Live data from Hacker News

A Bunch of Money on AWS and Some Benchmark Results

memsql.com

31–40 of 44 posts

Re: A Bunch of Money on AWS and Some Benchmark Results

#31

Earlier quoted context omitted.

The problem you're having is you can't figure out how to use benchmarks to understand how a system works. You're throwing up your hands and saying, "TOO DIFFERENT FROM REALITY!" Other folks don't do that, and while not 1:1, they are able to correlate the performance of a benchmark with the performance of their own use case. Try not to get wrapped around the axle on "everyone", by the way, it's not literal.

> Other folks don't do that, and while not 1:1, they are able to correlate the performance of a benchmark with the performance of their own use case. You can correlate lots of things. Poor countries increase penis size. Ice cream leads to murder. Cheese kills people by tangling them in their bedsheets. These things are strongly correlated. But they have no causative relationship. To put it another way, a single bench…

Sure, if you do it wrong. But if you do it right, you can get a lot of informative, valuable data out of a benchmark result that can accurately help decide between two (or more) technologies.

Like I've been saying, benchmark results are plenty useful if you know how to use them.

Re: A Bunch of Money on AWS and Some Benchmark Results

#32

Earlier quoted context omitted.

> The problem you're having I'm not having a problem. > is that everybody already knows that, Certainly, some people act like they don't, at least in the context of specific benchmarks. And some people outright claim the opposite of what you say everyone understands, e.g., by claiming that benchmarks inherently correlate with every possible use of a technology. > and plenty of folks can still extract value out of a b…

The problem you're having is you can't figure out how to use benchmarks to understand how a system works. You're throwing up your hands and saying, "TOO DIFFERENT FROM REALITY!" Other folks don't do that, and while not 1:1, they are able to correlate the performance of a benchmark with the performance of their own use case. Try not to get wrapped around the axle on "everyone", by the way, it's not literal.

> The problem you're having

Again, I'm not having a problem.

> is you can't figure out how to use benchmarks to understand how a system works

No, I have no partucular problem evaluating whether a benchmark is useful to a decision and if so, how.

Nor have I said anything indicating any such problem.

> You're throwing up your hands and saying, "TOO DIFFERENT FROM REALITY!"

No, I'm saying he naive statement upthread that benchmark performance correlates with every possible use of a technology is nonsense.

That's it.

> Other folks don't do that

Actually, some do, but that's neither here nor there.

> and while not 1:1, they are able to correlate the performance of a benchmark with the performance of their own use case.

Once again, yes, lots of people have the skill to figure out whether and in what way particular benchmarks have utility for their usecases. I explicitly said that in the post you are responding to.

That's very different than your claim that I reacted against, which is that any benchmark inherently correlates with every use case, which is—again—complete nonsense.

Re: A Bunch of Money on AWS and Some Benchmark Results

#33

As someone who's spent a lot of time working with TPC-DS [1] and talking to people about it [2], I see a couple areas that could be improved in this benchmark: 1. Total run time is not an appropriate way to summarize the performance across queries, because some queries take 100x longer than others. The appropriate way to summarize this kind of data is to use the geomean [3]. 2. The official TPC-DS queries make heavy…

There aren't a lot of 'official' published tpcds results. Until a little less than 2 months ago, there was exactly one published result; it was at the 10TB scale. I like your site and comparisons, but you only have 100 gig and 1 TB. If you had 10TB results I would have wanted to use them for comparison purposes. How come you haven't go to 10T?

We had to figure out how to get something to compare to and understand how we were doing. We looked at the recent Giga Om Microsoft 30T tpch results [1]. They used sum of query times to compare results (sum of times in terms of fraction of an hour to run them all * cost per hour). I decided to do the same sum of query time, except with TPC-DS 10T. As TPC-DS official results provide the power run time, we can get query times from there.

We wanted to push ourselves to test 10TB TPC-DS. It was much more data, much larger intermediate results.

Some databases don't support grouping sets, and that means they can't run the official queries as you said. When we added support for them in MemSQL we made a choice to implement features that customers want; customers want to run TPC-DS without changing the queries, too for testing and other reasons. There are suggested rewrites for systems that don't have grouping sets. MemSQL didn't always have that feature. It's another way to distinguish system capability, I don't know why some of those other companies choose not to add support. I don't think using grouping sets or rewriting matters too much for our perf.

We never cache results; for us the warmup time separates the time to compile and code gen. Some companies do cache final or intermediate results.

I will update our blog post with some of this info, but it might not be completed until tomorrow. Since you were interested in the first run, aka warmup only time I will provide it here first. It's about a 5% difference.

MemSQL Sum of query time (avg of runs not including the warm-up time, already in the blog post): 6,494.74

MemSQL Warmup time only (just the first run, so includes optimize and compile time): 6,860.68

I work at MemSQL.

[1] https://gigaom.com/report/data-warehouse-cloud-benchmark/ [2] https://fivetran.com/blog/warehouse-benchmark

Re: A Bunch of Money on AWS and Some Benchmark Results

#34

Earlier quoted context omitted.

The problem you're having is you can't figure out how to use benchmarks to understand how a system works. You're throwing up your hands and saying, "TOO DIFFERENT FROM REALITY!" Other folks don't do that, and while not 1:1, they are able to correlate the performance of a benchmark with the performance of their own use case. Try not to get wrapped around the axle on "everyone", by the way, it's not literal.

> The problem you're having Again, I'm not having a problem. > is you can't figure out how to use benchmarks to understand how a system works No, I have no partucular problem evaluating whether a benchmark is useful to a decision and if so, how. Nor have I said anything indicating any such problem. > You're throwing up your hands and saying, "TOO DIFFERENT FROM REALITY!" No, I'm saying he naive statement upthread tha…

> any benchmark inherently correlates with every use case

Oh. That's what you thought I said? Right. I didn't mean to say that, and if somehow I did say that I withdraw. Benchmarks are valuable if you know how to use them, but of course I agree with you, a benchmark isn't always relevant to every use case.

Side note, quoting many small portions of a person's comment and replying exclusively to the quoted bits is inferior to replying to them with full sentences/paragraphs. I've only ever seen what you're doing done by folks who are super interested in arguing and completely uninterested in having a conversation.

It definitely comes across like you do have a problem, which you have repeatedly stated you do not (and I believe you)! It just muddies the water, what you're doing here.

Re: A Bunch of Money on AWS and Some Benchmark Results

#35

This benchmark is pretty ridiculous for the following reasons: 1. Their database is run in asynchronous durability mode. 2. They specifically do the one thing that TPC-C says you shouldn't do, which is get really high throughput on a small dataset. TPC-C enforces that you scale your data-stored with the query throughput. CockroachDB maxes out at ~12.8tpmC/warehouse because its waiting at the legal maximum throughput…

What's the logic behind linking from HN to twitter?

I would've though it'd be easier to write on HN (and I know for a fact that it's painful for me to read on Twitter).

This is a genuine question by the way. I followed the link, then couldn't be bothered to try and make sense of it and got to wondering why you would do that.

Re: A Bunch of Money on AWS and Some Benchmark Results

#36

This benchmark is pretty ridiculous for the following reasons: 1. Their database is run in asynchronous durability mode. 2. They specifically do the one thing that TPC-C says you shouldn't do, which is get really high throughput on a small dataset. TPC-C enforces that you scale your data-stored with the query throughput. CockroachDB maxes out at ~12.8tpmC/warehouse because its waiting at the legal maximum throughput…

(MemSQL CTO here) 1. MemSQL is running with synchronous replication in all these benchmarks. All data is stored on a 2nd machine before any transaction is acknowledged as committed. You’re right this is not as strong as running with both synchronous writes to disk and over the network. MemSQL supports this as well and results in about a 40 to 50% performance hit depending on the disk speed. Very few of our customers…

1. Comparing numbers from one system (Cockroach) that adheres to strict durability requirements to another that does not (MemSQL) is apples to oranges, especially, as you point out, you see a 2x performance hit when you impose that requirement.

2. What you're looking for is the 'Think Time' mentioned in the TPC-C spec[1] (table in 5.2.5.7). From 5.2.5.2, I quote:

> for each transaction type, the Keying Time is constant and must be a minimum of 18 seconds for New- Order, 3 seconds for Payment, and 2 seconds each for Order-Status, Delivery, and Stock-Level.

Chapter 4 is pretty thorough on elaborating on this. The comment under section 4.1.3 explicitly states:

> Comment: The maximum throughput is achieved with infinitely fast transactions resulting in a null response time and minimum required wait times. The intent of this clause is to prevent reporting a throughput that exceeds this maximum, which is computed to be 12.86 tpmC per warehouse.

Again, CockroachDB numbers are right up against this limit - because the database is waiting, as required! It's within ~99% of the maximum allowed. No bar is allowed to go more than 1% higher! So stacking a bar chart next to it that goes 10x higher is pretty misleading.

3. I'm pretty impressed that you can run all the TPC-DS queries. That's pretty impressive. But performance wise, there really isn't enough fleshed out, and given that the TPC-DS authors explicitly disavow the single metric that you use (power test numbers), is simply too little to claim parity to existing databases. That said, in this conversation I'm an OLTP guy; I'll let others more experienced with Data Warehouse benchmarking take this up, e.g. [3]

4. This one I'll concede that you are doing the appropriate thing as per spec (SELECT FOR UPDATE ensures serializability), but it's the single part of the spec that's not held up over time - the paper "Making Snapshot Isolation Serializable" is a great explanation of just what lengths you have to go to to prove that a set of transactions only provide serializable histories when run in a degraded isolation mode. That said, fair enough, no anomalies will be present due to Alan Fekete's proof. But do note that CockroachDB is doing a lot of extra work (work that MemSQL can elide, since it's simply not checking for isolation anomalies) to ensure that histories are always serializable[4].

5. While I don't work there, I did a lot of work specifically on benchmarking CockroachDB, and would like to politely request that you take down those bars for CockroachDB, since you're taking numbers that are shackled to the THINK TIME maximum and comparing them to a system that is not.

[1]: http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-c_...

[2]: https://dl.acm.org/citation.cfm?id=1071615

[3]: https://twitter.com/gregrahn/status/1128448156180422656

[4]: I'll shamelessly plug my blog post on this for the reader interested in more about transaction isolation levels: https://ristret.com/s/f643zk/history_transaction_histories

Re: A Bunch of Money on AWS and Some Benchmark Results

#37
post #4

Earlier quoted context omitted.

Because?

Because all a benchmark tells you is the result of one use case. It's not an estimate of what your use will result in. It's basically a sales pitch. And sadly, upper management falls for it all the time, often without an evaluation period or even spitballing it for a week with the teams that would be using it. Tons of factors will change the result for a particular use case, regardless of how "normalized" the test tr…

(MemSQL VP of Product Management here)

We didn't intend the benchmarks to be a sales pitch. We are proud of the performance of MemSQL and what it has been able to achieve in our customers' workloads. We wanted a way to show what we are capable of with concrete numbers. We chose the standard benchmarks because they are well understood, not because they were necessarily representative of any given customer.

In general, benchmarks are useful to understand the strengths and weaknesses of a product at a basic level and how it compares to its peers, but we strongly encourage anyone evaluating their options to do a proper POC comparison on their actual use cases.

Re: A Bunch of Money on AWS and Some Benchmark Results

#38

As someone who's spent a lot of time working with TPC-DS [1] and talking to people about it [2], I see a couple areas that could be improved in this benchmark: 1. Total run time is not an appropriate way to summarize the performance across queries, because some queries take 100x longer than others. The appropriate way to summarize this kind of data is to use the geomean [3]. 2. The official TPC-DS queries make heavy…

There aren't a lot of 'official' published tpcds results. Until a little less than 2 months ago, there was exactly one published result; it was at the 10TB scale. I like your site and comparisons, but you only have 100 gig and 1 TB. If you had 10TB results I would have wanted to use them for comparison purposes. How come you haven't go to 10T? We had to figure out how to get something to compare to and understand how…

There's a ton of gray area in benchmarking, you have to make a lot of little choices along the way, so I appreciate you sharing your reasoning.

> How come you haven't go to 10T?

We don't see a lot of 10 TB single datasets "in the wild". We think 100 GB - 1 TB is more representative of the average real-world data warehouse user.

> for us the warmup time separates the time to compile and code gen

You should include compile time---your compile time is really good! Redshift sometimes takes longer to compile the query than to run it, though I think they may have improved this in the last 6 months.

Re: A Bunch of Money on AWS and Some Benchmark Results

#39

Earlier quoted context omitted.

(MemSQL CTO here) 1. MemSQL is running with synchronous replication in all these benchmarks. All data is stored on a 2nd machine before any transaction is acknowledged as committed. You’re right this is not as strong as running with both synchronous writes to disk and over the network. MemSQL supports this as well and results in about a 40 to 50% performance hit depending on the disk speed. Very few of our customers…

1. Comparing numbers from one system (Cockroach) that adheres to strict durability requirements to another that does not (MemSQL) is apples to oranges, especially, as you point out, you see a 2x performance hit when you impose that requirement. 2. What you're looking for is the 'Think Time' mentioned in the TPC-C spec[1] (table in 5.2.5.7). From 5.2.5.2, I quote: > for each transaction type, the Keying Time is consta…

That "Think Time" that you are referring to is supposed to emulate users running transactions on the database. So its not the database waiting its the driver waiting. While I do understand the reason for putting that in, you know very well that violating that limit doesn't artificially give CockroachDB or MemSQL an advantage when you are talking about 100,000 warehouses and a random distribution off transactions.

If CockroachDB is concerned about THINK TIME enough to ask for the numbers to be removed, this would be a great opportunity for them to remove that limit and see exactly how much they could push the benchmark.

Re: A Bunch of Money on AWS and Some Benchmark Results

#40
post #39

Earlier quoted context omitted.

1. Comparing numbers from one system (Cockroach) that adheres to strict durability requirements to another that does not (MemSQL) is apples to oranges, especially, as you point out, you see a 2x performance hit when you impose that requirement. 2. What you're looking for is the 'Think Time' mentioned in the TPC-C spec[1] (table in 5.2.5.7). From 5.2.5.2, I quote: > for each transaction type, the Keying Time is consta…

That "Think Time" that you are referring to is supposed to emulate users running transactions on the database. So its not the database waiting its the driver waiting. While I do understand the reason for putting that in, you know very well that violating that limit doesn't artificially give CockroachDB or MemSQL an advantage when you are talking about 100,000 warehouses and a random distribution off transactions. If…

You should read up on why this think time exists. It has nothing to do with "emulating slow clients" and everything to do with not claiming "I have a fast database" by running gazillion txn/sec on just 1MB of data in RAM.

TPC-C requires that you increase the amount of "live data" if you want to display/advertise more performance. That's the benchmark's rule.

If you want to benchmark something else, that's fine, but then

1) don't call it "TPC-C" 2) don't compare with databases that play by the rules.

Post reply on HN