Skip to content

Instantly share code, notes, and snippets.

@AshwinJay
Created September 1, 2011 06:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AshwinJay/1185555 to your computer and use it in GitHub Desktop.
Save AshwinJay/1185555 to your computer and use it in GitHub Desktop.
Linux /dev/shm (Shared memory file system) write performance test
package linuxfs;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
/*
* Author: Ashwin Jayaprakash
*/
public class FileOutTest {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 25; i++) {
testOut(args[0]);
Thread.sleep(500);
}
}
private static void testOut(String fileName) throws IOException {
long startTime = System.nanoTime();
long lengthBytes = testWrite(fileName);
long endTime = System.nanoTime();
System.out.printf("Finished writing [%d] bytes in [%d] millis%n", lengthBytes, (endTime - startTime) / 1000000);
}
private static long testWrite(String arg) throws IOException {
File file = new File(arg);
file.delete();
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
FileChannel fileChannel = fos.getChannel();
for (int i = 0; i < 1024; i++) {
long number = System.nanoTime();
for (int j = 0; j < 8; j++) {
fos.write(Long.toString(number).getBytes());
number++;
}
if (i % 128 == 0) {
fileChannel.force(true);
System.out.printf(" Current length [%d] bytes%n", file.length());
}
}
fos.close();
return file.length();
}
}
cloudera@cloudera-demo:~/shm-tests$ javac linuxfs/*.java
cloudera@cloudera-demo:~/shm-tests$ java -cp . linuxfs.FileOutTest /dev/shm/outtest.txt | grep Finished
Finished writing [114688] bytes in [153] millis
Finished writing [114688] bytes in [70] millis
Finished writing [114688] bytes in [61] millis
Finished writing [114688] bytes in [62] millis
Finished writing [114688] bytes in [61] millis
Finished writing [114688] bytes in [62] millis
Finished writing [114688] bytes in [59] millis
Finished writing [114688] bytes in [54] millis
Finished writing [114688] bytes in [52] millis
Finished writing [114688] bytes in [50] millis
Finished writing [114688] bytes in [52] millis
Finished writing [114688] bytes in [51] millis
Finished writing [114688] bytes in [49] millis
Finished writing [114688] bytes in [53] millis
Finished writing [114688] bytes in [55] millis
Finished writing [114688] bytes in [49] millis
Finished writing [114688] bytes in [56] millis
Finished writing [114688] bytes in [50] millis
Finished writing [114688] bytes in [51] millis
Finished writing [114688] bytes in [51] millis
Finished writing [114688] bytes in [52] millis
Finished writing [114688] bytes in [50] millis
Finished writing [114688] bytes in [51] millis
Finished writing [114688] bytes in [49] millis
Finished writing [114688] bytes in [51] millis
cloudera@cloudera-demo:~/shm-tests$ ls -lh /dev/shm/
total 372K
-rw-r--r-- 1 cloudera cloudera 112K 2011-03-03 02:09 outtest.txt
.. ..
cloudera@cloudera-demo:~/shm-tests$ df -h /dev/shm/
Filesystem Size Used Avail Use% Mounted on
none 502M 372K 501M 1% /dev/shm
cloudera@cloudera-demo:~/shm-tests$ mount -l
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
...
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
...
cloudera@cloudera-demo:~/shm-tests$ java -cp . linuxfs.FileOutTest /tmp/outtest.txt | grep Finished
Finished writing [114688] bytes in [565] millis
Finished writing [114688] bytes in [450] millis
Finished writing [114688] bytes in [461] millis
Finished writing [114688] bytes in [392] millis
Finished writing [114688] bytes in [482] millis
Finished writing [114688] bytes in [485] millis
Finished writing [114688] bytes in [399] millis
Finished writing [114688] bytes in [375] millis
Finished writing [114688] bytes in [376] millis
Finished writing [114688] bytes in [363] millis
Finished writing [114688] bytes in [390] millis
Finished writing [114688] bytes in [301] millis
Finished writing [114688] bytes in [382] millis
Finished writing [114688] bytes in [368] millis
Finished writing [114688] bytes in [372] millis
Finished writing [114688] bytes in [357] millis
Finished writing [114688] bytes in [415] millis
Finished writing [114688] bytes in [455] millis
Finished writing [114688] bytes in [422] millis
Finished writing [114688] bytes in [369] millis
Finished writing [114688] bytes in [431] millis
Finished writing [114688] bytes in [384] millis
Finished writing [114688] bytes in [419] millis
Finished writing [114688] bytes in [407] millis
Finished writing [114688] bytes in [309] millis
cloudera@cloudera-demo:~/tomcat-native$ ls -alh /tmp/outtest.txt
-rw-r--r-- 1 cloudera cloudera 112K 2011-03-03 02:09 /tmp/outtest.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment