2 ms·
Thanks Justin. Ahh -- "observed instances of eventual consistency" as in "able to observe poorer than strong consistency". I was imagining it as able to eventu
by jayp 12y ago
Thanks Justin.
Ahh -- "observed instances of eventual consistency" as in "able to observe poorer than strong consistency". I was imagining it as able to eventually confirm _consistency_. However, was dumbfounded by the lack of information on delay before check.
I wonder if the experiment normalizes for the client origin. The farther the client is from the actual server, the more time it takes to do a round trip, and less chance for an observed instance of eventual consistency.
- jcrites 12y ago> However, was dumbfounded by the lack of information on delay before check. Yes, I was wondering about this too. I examined the source code in the GitHub repository and found that all the follow-up operations are immediate. No consideration of or measurement of latency. > I wonder if the experiment normalizes for the client origin. Unfortunately it does not. As you imply, a high round trip time, or just high latency of the storage operations in general, could easily affect the apparent consistency with the current experiment design. In an enhanced version of this experiment I think it would be helpful to have latency measurements, such as total time from beginning of write until end of read (average and percentiles); and as you suggested round trip time measurements. Luckily the code is available, so I suppose it's on us to reproduce the results and extend them! Fortunately the code is also pretty short, since a lot of the storage system specific logic is encapsulated within the Apache JClouds library. (To clarify, I don't question the accuracy of the results they are about what I'd expect. I'm mostly being pedantic in drilling into these concerns, and wondering what more information we might be able to extract from the experiment.)
- jayp 12y agoYeah, more sophisticated and challenging experiments can be had. However, as they say, reality is relative. If the tests they ran are "realistic" in the sense that most people use the systems in the same way they tested, then it's all good. I suppose we need to agree on what's realistic / acceptable. I would say just minimize client-server RTT and that's a good setup, which they may have.
- khc 12y agoI helped Andrew ran the S3 tests. For us-standard bucket, we used an m3.medium instance in the us-east region, and for us-west bucket, we used a t2.micro instance in the us-west-2 (Oregon) region. It is also possible that S3 somehow tries to pin requests from the same client to the same storage nodes. A better test setup would coordinate writing and reading across multiple clients, but is beyond the scope of this experiment. http://www.researchgate.net/publication/259541556_Eventual_Consistency_How_soon_is_eventual_An_Evaluation_of_Amazon_S3%27s_Consistency_Behavior/links/0deec52c6e04b49921000000.pdf http://www.researchgate.net/publication/259541556_Eventual_C... describes such a system and their results.
- jayp 12y agoThanks for the clarification and the work Andrew and you put in.
- jcrites 12y agoCool! Thanks for the research and experiment, and for following up on HN. I appreciated the attention to detail that was paid to documenting and explaining the consistency models. Be careful about running experiments from "t"-class instance types. Due to their ability to "burst" and consume extra CPU, the amount of system resources available to them is not consistent. This poses an experiment design challenge of ensuring that available system resources do not vary. It may be easier to run reliable experiments from another type. > Traditional Amazon EC2 instance types provide fixed performance, while T2 instances provide a baseline level of CPU performance with the ability to burst above that baseline level. They are intended for workloads that don't use the full CPU often or consistently, but occasionally need to burst. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instan... I am not sure if this will have meaningfully affected the accuracy of the results (probably not), but I thought I'd point it out for future reference.
- khc 12y agoYup I am aware. For reference, the test took about 1000 minutes on the t1.micro (I misspoke earlier) and about 642 minutes on m3. I didn't test to see if the difference was due to machine class or region. Note that each run has 6 tests, each test is repeated 1000000 times and involves multiple requests.