Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Create aligned buffers to make faster disk io with less iops

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 src
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.md
Octocat-spinner-32 binding.gyp
Octocat-spinner-32 index.js
Octocat-spinner-32 package.json
README.md

Aligned buffers for node.js

Aligned buffers will allow you to read data from disk much faster than you think you can. For example, if you read 64k blocks from disk to aligned buffers, you may get 50% speed-up.

Installation

Install it as usual from npm:

npm install aligned-buffer

API

Require module:

var aligned = require("aligned-buffer");

Getting alignment:

var alignment = aligned.alignment();

Getting aligned buffer:

var buf = aligned.buffer(/* alignment, don't change*/ aligned.alignment(), /* size */ 1024 * 64);

Usage

You will need at least node-0.8.9 to support O_DIRECT flag. If you want to use it with older node, you need to find out O_DIRECT value by yourself (fgrep O_DIRECT /usr/include for linux).

var fs        = require("fs"),
    aligned   = require("aligned-buffer"),
    constants = process.binding("constants"),
    fd        = fs.openSync("/my_big_file", constants.O_RDONLY | constants.O_DIRECT),
    size      = 64 * 1024, // 64k blocks
    buf       = aligned.buffer(aligned.alignment(), size),
    offset    = 0;

// offset should be aligned to buf.length,
// so allowed values are: 0, 64k, 128k, 172k
// if offset is not aligned you will receive no boost

fs.read(fd, buf, 0, buf.length, offset, function(error) {
    if (error) {
        console.log(error);
        return;
    }

    console.log("successful read!");
});

Authors

Something went wrong with that request. Please try again.