Live data from Hacker News

Removing fsync from our local storage engine

fractalbits.com

81–88 of 88 posts

Re: Removing fsync from our local storage engine

#81
post #65

S3 was never designed for performance. Trying to be compatible while going with very hardware dependent low level optimization seems to be a wrong direction to begin with.

check s3 express one zone

Still slow as hell, if you think 10ms is fast that’s a different story.

Re: Removing fsync from our local storage engine

#82

Earlier quoted context omitted.

I used to say this as well but like.. industry has, for a long time now equated “durable” with “stored on disk”. Any DBA will assume that’s what it means, and use that fact when they work out the replication they need either in clustering or in raid. If you’re building a data storage system and are using the term “durable” to mean “it’s in RAM on three virtual machines”, for example, I don’t think it’s unfair to say…

I don’t have any respect for the viewpoint that “durable” is equatable with “stored on disk”, and I don’t want to spend time accommodating that viewpoint. It is just an oversimplification in a very bad way. AFRs and discussions about different failure scenarios are the bare minimum. The bare minimum for scenarios is disk loss, total machine loss, and data center loss. This is just my take on things. I don’t care if s…

The point of “durable” implying stored to durable media is precisely that it allows the operator of the system to make that kind of calculation. They know the disks they picked and the replication chosen, and as long as the database calls fsync, their calculations will work.

My beef is with database systems that use the argument you made further up thread to skip fsync to juice their performance numbers. Data is not “durable” if turning off the machines storing it means it’s lost, that’s a category difference, not a pure probability difference as you are claiming.

It is of course totally fine to not store data to durable media and say the risk of devops doing a coordinated reboot is as low as the risk of raid disk data loss, but then don’t use the word “durable”.

Re: Removing fsync from our local storage engine

#84

The repo seems to contains some api gateway, and none of actual storage engine is open sourced. I did it so you don’t have to waste your time to find out.

Looks violently non-open-source: https://github.com/fractalbits-labs/fractalbits/issues/8

Re: Removing fsync from our local storage engine

#85
post #58

If you're bypassing the page cache, what invalidates the page cache so that the next read (from the filesystem) isn't stale?

we also use direct-io for reads.

You have your own read cache then? You're nearly at the Oracle-level of writing your own filesystem at this point.

Re: Removing fsync from our local storage engine

#86

Earlier quoted context omitted.

I don’t have any respect for the viewpoint that “durable” is equatable with “stored on disk”, and I don’t want to spend time accommodating that viewpoint. It is just an oversimplification in a very bad way. AFRs and discussions about different failure scenarios are the bare minimum. The bare minimum for scenarios is disk loss, total machine loss, and data center loss. This is just my take on things. I don’t care if s…

The point of “durable” implying stored to durable media is precisely that it allows the operator of the system to make that kind of calculation. They know the disks they picked and the replication chosen, and as long as the database calls fsync, their calculations will work. My beef is with database systems that use the argument you made further up thread to skip fsync to juice their performance numbers. Data is not…

That definition of durable doesn’t seem useful to me, sorry. I want the failure rates and scenarios.

Re: Removing fsync from our local storage engine

#87
post #45

Earlier quoted context omitted.

Assuming O_DIRECT actually blocks until the SSD has acked (this isn't actually what O_DIRECT's contract says, but what they rely on), you have to wait until each page write acks whenever you need a persistence barrier. My guess is the preallocation + zeroing is what got them most of the win, and the O_DIRECT is actually hurting, not helping throughput. This has been the case 100% of the time I've benchmarked such thi…

That's a lot of valuable information and thanks for the input. Yes the original blog post is mainly focusing on reducing the metadata overhead due to fsync(), and I got a lot of good feedback from here and a lot of discussion is beyond our original scenario settings. We would like to incorporate all these enhancement suggestions without re-introducing fsync(), and make it work for more general environments.

Have you tried terminating the EC2 instances abruptly to test the resilience of your solution?

aws ec2 stop-instances \ --instance-ids i-12345678 \ --skip-os-shutdown

Re: Removing fsync from our local storage engine

#88
post #58

Earlier quoted context omitted.

we also use direct-io for reads.

You have your own read cache then? You're nearly at the Oracle-level of writing your own filesystem at this point.

we manage memory instead of relying on page cache
Post reply on HN