Skip to content

Instantly share code, notes, and snippets.

@petrosagg
Created November 1, 2017 01:58
Show Gist options
  • Select an option

  • Save petrosagg/de4e55bd0b653fb8b682c57bccd44546 to your computer and use it in GitHub Desktop.

Select an option

Save petrosagg/de4e55bd0b653fb8b682c57bccd44546 to your computer and use it in GitHub Desktop.
NodeJS write speed test
const fs = require('fs')
const crypto = require('crypto')
// Create 4MB buffer
const buf = crypto.randomBytes(4 * 1024 * 1024)
const drives = [
'/dev/sda',
'/dev/sdb',
'/dev/sdc',
'/dev/sdd',
'/dev/sde',
'/dev/sdf',
'/dev/sdg',
'/dev/sdh',
'/dev/sdi',
'/dev/sdj',
'/dev/sdk',
'/dev/sdl',
'/dev/sdm',
'/dev/sdn',
'/dev/sdo',
'/dev/sdp'
]
const fds = []
for (let i = 0; i < drives.length; i++) {
fds.push(fs.openSync(drives[i], fs.constants.O_SYNC | fs.constants.O_WRONLY))
}
let data = 0
const hammer = (fd) => {
data += buf.length / 1024 / 1024
fs.write(fd, buf, (err) => {
if (err) {
console.log(err)
process.exit(1)
}
hammer(fd)
})
}
const start = Date.now()
setInterval(() => {
console.log(data / (Date.now() - start) * 1000, 'MB/s')
}, 1000)
for (let i = 0; i < 8; i++) {
hammer(fds[i])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment