Ability to switch off filesystem read-aheads
Summary: Ability to switch off filesystem read-aheads. This change is backward-compatible: the default setting is to allow file system read-aheads. Test Plan: run benchmarks Reviewers: heyongqiang, adsharma Reviewed By: heyongqiang Differential Revision: https://reviews.facebook.net/D5391
This commit is contained in:
parent
4028ae7d31
commit
93f4952089
@ -165,6 +165,7 @@ static int FLAGS_readwritepercent = 90;
|
|||||||
static leveldb::Env* FLAGS_env = leveldb::Env::Default();
|
static leveldb::Env* FLAGS_env = leveldb::Env::Default();
|
||||||
|
|
||||||
extern bool useOsBuffer;
|
extern bool useOsBuffer;
|
||||||
|
extern bool useFsReadAhead;
|
||||||
|
|
||||||
namespace leveldb {
|
namespace leveldb {
|
||||||
|
|
||||||
@ -1133,6 +1134,9 @@ int main(int argc, char** argv) {
|
|||||||
} else if (sscanf(argv[i], "--bufferedio=%d%c", &n, &junk) == 1 &&
|
} else if (sscanf(argv[i], "--bufferedio=%d%c", &n, &junk) == 1 &&
|
||||||
(n == 0 || n == 1)) {
|
(n == 0 || n == 1)) {
|
||||||
useOsBuffer = n;
|
useOsBuffer = n;
|
||||||
|
} else if (sscanf(argv[i], "--readhead=%d%c", &n, &junk) == 1 &&
|
||||||
|
(n == 0 || n == 1)) {
|
||||||
|
useFsReadAhead = n;
|
||||||
} else if (sscanf(argv[i], "--statistics=%d%c", &n, &junk) == 1 &&
|
} else if (sscanf(argv[i], "--statistics=%d%c", &n, &junk) == 1 &&
|
||||||
(n == 0 || n == 1)) {
|
(n == 0 || n == 1)) {
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "util/posix_logger.h"
|
#include "util/posix_logger.h"
|
||||||
|
|
||||||
bool useOsBuffer = 1; // cache data in OS buffers
|
bool useOsBuffer = 1; // cache data in OS buffers
|
||||||
|
bool useFsReadAhead = 1; // allow filesystem to do readaheads
|
||||||
|
|
||||||
namespace leveldb {
|
namespace leveldb {
|
||||||
|
|
||||||
@ -81,7 +82,12 @@ class PosixRandomAccessFile: public RandomAccessFile {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
PosixRandomAccessFile(const std::string& fname, int fd)
|
PosixRandomAccessFile(const std::string& fname, int fd)
|
||||||
: filename_(fname), fd_(fd) { }
|
: filename_(fname), fd_(fd) {
|
||||||
|
if (!useFsReadAhead) {
|
||||||
|
// disable read-aheads
|
||||||
|
posix_fadvise(fd, 0, 0, POSIX_FADV_RANDOM);
|
||||||
|
}
|
||||||
|
}
|
||||||
virtual ~PosixRandomAccessFile() { close(fd_); }
|
virtual ~PosixRandomAccessFile() { close(fd_); }
|
||||||
|
|
||||||
virtual Status Read(uint64_t offset, size_t n, Slice* result,
|
virtual Status Read(uint64_t offset, size_t n, Slice* result,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user