odirect 0.70 review
DownloadWhen reading a lot of data from disk or network filesystem, e.g
|
|
When reading a lot of data from disk or network filesystem, e.g. during a backup, buffer cache pollution can be a substantial performance problem for other processes on the machines involved due to buffer cache pollution. odirect is intended to provide a convenient way of avoiding that on systems that offer an O_DIRECT value for open().
odirect provides a C library and SWIG code to make it easy to use from your favorite scripting language.
This project is in the toddler stage:
tests run:
I've tested the C library from a C program. This test only reads via odirect
I've tested the swig interface code via a python script that uses the swig interface directly. This test too only reads via odirect
I've tested the swig interface code via a python wrapper that gives module much more pythonic functionality. This test reads via both odirect and the usual Python file I/O, and compares
I've tested the pythonic interface wrapped with bufsock. This test only reads via odirect, but bufsock adds the ability to read sub-block pieces from a buffered full-length block
Caveats:
Although the tests are pretty good, I've used this in only one real application so far - and that's my pyindex program
I've only tested with C and Python so far, and frankly, I'm pretty happy leaving it there for now at least, since my favorite programming languages at this time are C, bash and Python. If you're interested in other languages, please drop me a note - ideal would be diffs for the Makefile and any supporting files, like odirect.whateverExtension wrappers.
0.55 had no write support; only read. The current version, 0.65, has 100% untested write support. That's right - all that testing is only checking reading.
No "install" rule in the Makefile yet.
The various python modules insert "." on their python path from too many places; this should be done in the test programs themselves, not the module(s) lest we create (and leave) a security issue
What's New in This Release:
This release adds C++ support, bringing the list of supported languages to C, C++, and Python.
odirect 0.70 keywords