Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stewartsmith/libeatmydata
libeatmydata - because fsync() should be a no-op
https://github.com/stewartsmith/libeatmydata
Last synced: 2 months ago
JSON representation
libeatmydata - because fsync() should be a no-op
- Host: GitHub
- URL: https://github.com/stewartsmith/libeatmydata
- Owner: stewartsmith
- License: gpl-3.0
- Created: 2013-09-26T06:54:47.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-05-13T07:58:47.000Z (8 months ago)
- Last Synced: 2024-08-03T17:10:22.470Z (6 months ago)
- Language: C
- Homepage: https://www.flamingspork.com/projects/libeatmydata/
- Size: 593 KB
- Stars: 399
- Watchers: 16
- Forks: 21
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-ld-preload - libeatmydata - disable all forms of writing data safely to disk. fsync() becomes a no-op, O\_SYNC is removed, etc. (Libraries)
README
libeatmydata
============An LD_PRELOAD library that disables all forms of writing data safely to disk.
fsync() becomes a NO-OP, O_SYNC is removed etc.The idea is to use in testing to get faster test runs where real durability is
not required.***DO NOT*** use libeatmydata on software where you care about what it stores. It's called lib***EAT-MY-DATA*** for a *reason*.
see http://www.flamingspork.com/projects/libeatmydata
Installing
------------Debian/Ubuntu and friends:
```
apt install eatmydata
```To build from source, you will need `autoconf`, `autoconf-archive`, `automake`, `libtool`, and a compiler (say, `gcc`).
Then, build and install like so:
```
git clone https://github.com/stewartsmith/libeatmydata.git # (or extract from source tarball)
cd libeatmydata
autoreconf -i # (if building from git only)
./configure
make
make check
sudo make install
```Usage
-----```
eatmydata foo
```Performance Improvements
------------------------When running part of the MySQL test suite in 2007 on my laptop:
```
TEST RESULT TIME (ms) TIME (with libeatmydata)
----------------------------------------------------------------------------------main.innodb-lock [ pass ] 4523 4323
main.innodb-replace [ pass ] 102 56
main.innodb-ucs2 [ pass ] 5786 1084
main.innodb [ pass ] 78306 24900
main.innodb_gis [ pass ] 2647 1544
main.innodb_mysql [ pass ] 86810 68579
main.innodb_notembedded [ pass ] 198 150
main.innodb_timeout_rollback [ pass ] 2990 2750
main.innodb_trx_weight [ pass ] 1608 841
---------------------------------------------------------------
Stopping All Servers
All 9 tests were successful.
The servers were restarted 7 timesWITHOUT: Spent 182.97 seconds actually executing testcases
WITH : Spent 104.227 seconds actually executing testcasesWITHOUT: WITH:
real 3m36.053s real 2m10.610s
user 0m42.323s user 0m41.939s
sys 0m2.844s sys 0m2.356s
```Talks/Video
-----------libeatmydata was the product of a talk I gave back at linux.conf.au 2007, titled
"Eat My Data: How Everybody gets File IO Wrong" - I also gave this talk at OSCON.
This talk went over the common mistakes people make when using POSIX file IO
routines.You can watch a video recording of this talk at:
- https://youtu.be/LMe7hf2G1po
- [http://www.linux.org.au/conf/2007/talk/278.html](https://web.archive.org/web/20130504133047/http://www.linux.org.au/conf/2007/talk/278.html)Copyright
---------(C)2007-2022 Stewart Smith
and other contributors (see AUTHORS)
See LICENSE for full text of GPLv3