Live data from Hacker News

Cassandra Hits One Million Writes Per Second on Google Compute Engine

googlecloudplatform.blogspot.com

31–40 of 41 posts

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#31
post #11

Earlier quoted context omitted.

I ran those tests. One of the challenges in benchmarking is to pick the workload, so I chose one our customers do more often. For IO testing I prefer to run FIO tests, and for networking iperf, but unless you do this for a living it is hard to relate to microbenchmarks. It would also leave out the Java settings. The reason I left the tests running for an hour is because at some point Cassandra gets into compactions,…

Thanks I missed the link to the tarball in the GIST. Now that I can see the workload I see that it is 100 million keys for the entire cluster of 330 nodes? That is 8 terabytes (n1-standard-8) of RAM for 18.6 * RF gigabytes of data or am I wrong? The entire thing should fit in the page cache assuming compaction keeps up. There are no deletes so no tombstones. On an overwrite workload I don't know what the space amplif…

Hi - I figured you know what you're doing based on the details you picked on. I suspect you'd have way more fun reading the raw logs, but that would make for a post that is incredibly hard to parse. I will try to figure out a venue for them.

It was 100M keys per loader, so 30x100M for the low latency cluster and 45x100M for the high latency cluster. I sized to keep running long enough to go over half dozen major compactions, not necessarily to eat storage space.

Most of the IO is sequential, which really makes no difference for our backend (sorry, I have to leave it at that). Read performance ends up affecting the performance when the system reaches its limits of pending compactions, which I limited in the config. I could probably get a higher number without it, but it looked more realistic to set limits and I'd not deploy a server without the limits.

I had to make the fsyncs more frequent, not less, to reduce the odds of an operation sitting behind a long flush. This was a counter-intuitive finding for me, but it makes sense considering Persistent Disks throttle both IO sizes and IOPS. We do that to make sure a noisy neighbouring VM won't affect yours. So I turned on trickle_fsync and tuned the size of the maximum syncs to never have a slow flush, but a lot of smaller flushes.

Tuning the Java GC was for the same reason - I did not want long GC cycles. The settings I used were based on the guidance from Java memory ergonomics. The DataStax distribution has tips and hints in the cassandra-env.sh file itself, which I read it and followed through. I also read more about Java memory than I ever want to read again from various vendors. As the joke goes "I did even the things that contradicted the other things" before getting to the settings you saw.

I hope you appreciate the fact I set limits on some of the most dangerous knobs, for instance limiting the RPC server and using HSHA as opposed to unbounded sync.

I understand the limitations of the benchmark I used, and the limitations of the post. I tried to stay within recommended settings for all subsystems, have safe limits for everything I found dangerous, and I picked the workload because that is what our customers do. I don't advocate one storage solution over another, we love everyone that buys our solutions :)

BTW, while we do not sell Cassandra as a service, we do sell Cloud SQL (https://developers.google.com/cloud-sql/). Maybe the sales guys will give me a cut :)

Sharing the config was more work, but I suspected I was going to learn something by doing it. Thank you for the feedback!

PS: sorry for the delay replying - Y Combinator says I am posting too much. I am not quite sure at what point I will hit my daily quota of replies.

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#32
These cloud-y benchmarks are a joke.

1. What is the point of benchmarking so many writes? Instead, give us the cost of write-read and a few use cases: analysis, data mining, etc. And what of the bandwidth costs?

2. Say you are running a moderately intensive application that needs to be up 10 hours a day. $330/hour x 10 = $3300. Multiply that by a few days and where does that leave you?

Suddenly having your own infrastructure with kit like this: http://www.fusionio.com/products in it is not such a bad idea! This also means you don't have to use any funny NoSQL products, can use standard programming, non cloudy infrastructure and a decent RDBMs setup that non Silicon-valley, non-hipster humans have a chance of understanding and reliably maintaining.

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#33
post #4

Is anyone actually using Google Compute Engine? I haven't bumped into anyone using it and would love to hear what the real world experience is with it.

I've tested it, network latency is by far not as good as for example Rackspace Cloud. And tool-support is very far behind Amazon and OpenStack. Basically Google Compute Engine is something that might have had a chance years ago but at this point in time it's quite pointless because it has no upsides compared to existing far better established solutions and is behind on features, documentation, tools and user-support.…

> And I expect that not to get better soon if nobody is using it...

If Compute Engine is Google exposing internal infrastructure as an additional product, its quite likely that lots of people are using it (and that it is strategically important for it to be more usable) even if few people are paying for it.

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#34

In the end these are just eye-popping benchmarks. What really drives people to your platform is developer friendliness and the speed by which you can get started. Google App Engine has this, but there's not a lot of information floating around the media and blogosphere as there is for Heroku and DigitalOcean. I use Google App Engine for auto scaling an API and it works brilliantly. Super easy to set up and develop on…

While this doesn't directly pertain to your comment, perhaps it's somewhat related to onboarding with GAE... I've been developing on GAE since it was released in 2008 and recently became "Google Cloud Platform Certified". I'm considering offering a "Google App Engine for Startups" class/workshop (at something like General Assembly). The class would primarily include details about the platform's architecture and best…

From organizing past events, it's much easier to just do it and have it flop (nobody's going to notice it if it does) than try looking if there's interest or not. Ask your target venue if you can do it, make sure it has some visibility (ie. make sure it's in the program), setup a slide deck or two and do it. Good luck!

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#35

Did anyone actually care to see if that data can be read back? :) https://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-en...

The BLACKHOLE storage engine supports all kinds of indexes.

Best part of that page.

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#36
post #4

Is anyone actually using Google Compute Engine? I haven't bumped into anyone using it and would love to hear what the real world experience is with it.

I've tested it, network latency is by far not as good as for example Rackspace Cloud. And tool-support is very far behind Amazon and OpenStack. Basically Google Compute Engine is something that might have had a chance years ago but at this point in time it's quite pointless because it has no upsides compared to existing far better established solutions and is behind on features, documentation, tools and user-support.…

It's a lot easier to go from zero to proficient with GCE than it is with AWS. This has no relation with the fact that AWS has a bigger "menu".

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#37

Did anyone actually care to see if that data can be read back? :) https://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-en...

Unix admins have been using a far better technology for decades: Store in /dev/null, extract from dev/random. The write speeds are just as fast, but you will eventually get your results back. It is said that it'd be quicker to extract the next Game of Thrones novel from this system than to wait for George R R Martin to finish writing it.

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#38
post #11

I like Cassandra and I think it's something you should look at hard if what you want is an eventually consistent database because multi-DC and availability are important to the problem you are solving. The blog post fails to make that case anywhere. I am guessing that is because it is an ad for GCE and not Cassandra. I know these kinds of benchmarks are necessary to get and keep your widget on the map, but they alway…

I ran those tests. One of the challenges in benchmarking is to pick the workload, so I chose one our customers do more often. For IO testing I prefer to run FIO tests, and for networking iperf, but unless you do this for a living it is hard to relate to microbenchmarks. It would also leave out the Java settings. The reason I left the tests running for an hour is because at some point Cassandra gets into compactions,…

> The cluster was brought up at once, and I added the ramp up time on the chart so folks could see it.

Can any person really bring up a cluster of this size? On AWS, you need special permission to launch more than ~20 instances of one type, and it's granted only after you make a business case for it, which they won't grant to regular peons. With my regular Google account that doesn't have any kind of special approval, can I really launch 330 instances within a few minutes?

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#39
post #11

Earlier quoted context omitted.

I ran those tests. One of the challenges in benchmarking is to pick the workload, so I chose one our customers do more often. For IO testing I prefer to run FIO tests, and for networking iperf, but unless you do this for a living it is hard to relate to microbenchmarks. It would also leave out the Java settings. The reason I left the tests running for an hour is because at some point Cassandra gets into compactions,…

> The cluster was brought up at once, and I added the ramp up time on the chart so folks could see it. Can any person really bring up a cluster of this size? On AWS, you need special permission to launch more than ~20 instances of one type, and it's granted only after you make a business case for it, which they won't grant to regular peons. With my regular Google account that doesn't have any kind of special approval…

There is a CPU quota limit (and a disk limit) that you have to get approved to raise (and I think there's a limit to how many requests/second you can make to the GCE API), but if you get those approvals, you're good.

Re: Cassandra Hits One Million Writes Per Second on Google Compute Engine

#40
post #4

Is anyone actually using Google Compute Engine? I haven't bumped into anyone using it and would love to hear what the real world experience is with it.

I've tested it, network latency is by far not as good as for example Rackspace Cloud. And tool-support is very far behind Amazon and OpenStack. Basically Google Compute Engine is something that might have had a chance years ago but at this point in time it's quite pointless because it has no upsides compared to existing far better established solutions and is behind on features, documentation, tools and user-support.…

Google Compute Engine actually has many features that makes it better than AWS http://yourstory.com/2013/12/google-compute-engine-better-th...
Post reply on HN