client server - usenix · ming chen,dean hildebrand,Ïhenry nelson,å jasmitsaluja, ashok...

15
vNFS: Maximizing NFS Performance with Compounds and Vectorized I/O Ming Chen, Dean Hildebrand, Ï Henry Nelson, å Jasmit Saluja, Ashok Sankar Harihara Subramony, and Erez Zadok Stony Brook University, Ï IBM Research – Almaden, å Ward Melville High School https://github.com/sbu-fsl/txn-compound © 2017 Stony Brook University vNFS talk (FAST’17) 2 March 2, 2017 Network File System (NFS) l An IETF standardized storage protocol l Provides transparent remote file access l Needs to overcome the high network latency vNFS talk (FAST’17) 3 March 2, 2017 NFSv4 Compound Procedures Client Server vNFS talk (FAST’17) 4 March 2, 2017 NFSv4 Compound Procedures Client Server vNFS talk (FAST’17) 5 March 2, 2017 NFSv4 Compound Procedures Client Server vNFS talk (FAST’17) 6 March 2, 2017 NFSv4 Compound Procedures Client Server

Upload: others

Post on 15-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS: Maximizing NFS Performance with Compounds and Vectorized I/O

Ming Chen, Dean Hildebrand,Ï Henry Nelson,å

Jasmit Saluja, Ashok Sankar Harihara Subramony, and Erez Zadok

Stony Brook University, ÏIBM Research – Almaden, åWard Melville High School

https://github.com/sbu-fsl/txn-compound

© 2017 Stony Brook University vNFS talk (FAST’17) 2March 2, 2017

Network File System (NFS)l An IETF standardized storage protocoll Provides transparent remote file accessl Needs to overcome the high network latency

vNFS talk (FAST’17) 3March 2, 2017

NFSv4 Compound ProceduresClient Server

vNFS talk (FAST’17) 4March 2, 2017

NFSv4 Compound ProceduresClient Server

vNFS talk (FAST’17) 5March 2, 2017

NFSv4 Compound ProceduresClient Server

vNFS talk (FAST’17) 6March 2, 2017

NFSv4 Compound ProceduresClient Server

Page 2: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 7March 2, 2017

NFSv4 Compound ProceduresClient Server

Bandwidth Wasted

vNFS talk (FAST’17) 8March 2, 2017

NFSv4 Compound Procedures

CompoundReply:

CompoundRequest:

READ “~/.bashrc”;READ “~/.bash_profile”;READ “~/.bash_login”

“~/.bashrc” content;“~/.bash_profile” content;“~/.bash_login” content

Client Server

Bandwidth Utilized

vNFS talk (FAST’17) 9March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”

vNFS talk (FAST’17) 10March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”Client Server

0Network

round trips

vNFS talk (FAST’17) 11March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”Client Server

stat(2):

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.

(2) PUTFH fh1; LOOKUP “Bob”; GETFH; GETATTR.

FH (fh1) and attributes of “/home”.

FH (fh2) and attributes of “/home/Bob”.

2Network

round trips

vNFS talk (FAST’17) 12March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”Client Server

stat(2):

open(2):

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.

(2) PUTFH fh1; LOOKUP “Bob”; GETFH; GETATTR.

(3) PUTFH fh2; OPEN “.bashrc”; GETFH; GETATTR.

FH (fh1) and attributes of “/home”.

FH (fh2) and attributes of “/home/Bob”.

FH (fh3) and attributes of “~/.bashrc”.

3Network

round trips

Page 3: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 13March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”Client Server

stat(2):

open(2):

read(2):

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.

(2) PUTFH fh1; LOOKUP “Bob”; GETFH; GETATTR.

(3) PUTFH fh2; OPEN “.bashrc”; GETFH; GETATTR.

(4) PUTFH fh3; READ 0 4096;

FH (fh1) and attributes of “/home”.

FH (fh2) and attributes of “/home/Bob”.

FH (fh3) and attributes of “~/.bashrc”.

“~/.bashrc” file content.

4Network

round trips

vNFS talk (FAST’17) 14March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”Client Server

stat(2):

open(2):

read(2):

close(2):

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.

(2) PUTFH fh1; LOOKUP “Bob”; GETFH; GETATTR.

(3) PUTFH fh2; OPEN “.bashrc”; GETFH; GETATTR.

(4) PUTFH fh3; READ 0 4096;

(5) PUTFH fh3; CLOSE; GETATTR.

FH (fh1) and attributes of “/home”.

FH (fh2) and attributes of “/home/Bob”.

FH (fh3) and attributes of “~/.bashrc”.

“~/.bashrc” file content.

Attributes of “~/.bashrc”.

5Network

round trips

vNFS talk (FAST’17) 15March 2, 2017

Compounds Are Underused!l Limited by the synchronous POSIX file-system API

u Example: reading “/home/Bob/.bashrc”Client Server

stat(2):

open(2):

read(2):

close(2):

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.

(2) PUTFH fh1; LOOKUP “Bob”; GETFH; GETATTR.

(3) PUTFH fh2; OPEN “.bashrc”; GETFH; GETATTR.

(4) PUTFH fh3; READ 0 4096;

(5) PUTFH fh3; CLOSE; GETATTR.

FH (fh1) and attributes of “/home”.

FH (fh2) and attributes of “/home/Bob”.

FH (fh3) and attributes of “~/.bashrc”.

“~/.bashrc” file content.

Attributes of “~/.bashrc”.

5Network

round trips

vNFS talk (FAST’17) 16March 2, 2017

Need a Batching File-System APIl Target: open, read, and close multiple files in one RPC

Client Server

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.

5Network

round trips

vNFS talk (FAST’17) 17March 2, 2017

Need a Batching File-System APIl Target: open, read, and close multiple files in one RPC

Client Server

(1) PUTROOTFH; LOOKUP “home”; GETFH; GETATTR.VectorizedHigh-level

File-systemAPI

5Network

round trips

vNFS talk (FAST’17) 18March 2, 2017

Need a Batching File-System APIl Target: open, read, and close multiple files in one RPC

Client Server

VectorizedHigh-level

File-systemAPI

PUTROOTFH; LOOKUP “home”; LOOKUP “Bob”;GETFH; GETATTR; SAVEFH;OPEN “.bashrc”; READ 0 4096; CLOSE;GETFH; GETATTR; RESTOREFH;OPEN “.bash_profile”; READ 0 4096; CLOSE;GETFH; GETATTR; RESTOREFH;OPEN “.bash_login”; READ 0 4096; CLOSE;GETFH; GETATTR.

File handles, attributes, and file contents of “.bashrc”, “.bash_profile”, and “.bash_login”.

1Network

round trips

Page 4: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 19March 2, 2017

Need a Batching File-System APIl Target: open, read, and close multiple files in one RPC

Client Server

VectorizedHigh-level

File-systemAPI

PUTROOTFH; LOOKUP “home”; LOOKUP “Bob”;GETFH; GETATTR; SAVEFH;OPEN “.bashrc”; READ 0 4096; CLOSE;GETFH; GETATTR; RESTOREFH;OPEN “.bash_profile”; READ 0 4096; CLOSE;GETFH; GETATTR; RESTOREFH;OPEN “.bash_login”; READ 0 4096; CLOSE;GETFH; GETATTR.

File handles, attributes, and file contents of “.bashrc”, “.bash_profile”, and “.bash_login”.

1Network

round trips

vNFS talk (FAST’17) 20March 2, 2017

vread/vwrite

l Read/write many filesu Unlike readv/writev(2): many (non-contiguous) offsets

of many filesu Append to file when write offset is UINT64_MAX

l Automatic file opening/closingu Pass states using “current filehandle” and “current stateid”

struct vio {struct vfile vfile; // [IN]: a file identified by path or descriptoruint64_t offset; // [IN]: offset of read/write, UINT64_MAX means appenduint64_t length; // [IN]: bytes to read/write; [OUT]: bytes read/writtenconst char *data; // [IN]: data to write; [OUT]: buffer for readuint32_t flags; // [IN] flags: is_creation, is_write_stable

}; // [OUT] flags: is_eof, is_write_stablestruct vres vread(struct vio *ios, int n);struct vres vwrite(struct vio *ios, int n);

vNFS talk (FAST’17) 21March 2, 2017

vread/vwrite

l Read/write many filesu Unlike readv/writev(2): many (non-contiguous) offsets

of many filesu Append to file when write offset is UINT64_MAX

l Automatic file opening/closingu Pass states using “current filehandle” and “current stateid”

struct vio {struct vfile vfile; // [IN]: a file identified by path or descriptoruint64_t offset; // [IN]: offset of read/write, UINT64_MAX means appenduint64_t length; // [IN]: bytes to read/write; [OUT]: bytes read/writtenconst char *data; // [IN]: data to write; [OUT]: buffer for readuint32_t flags; // [IN] flags: is_creation, is_write_stable

}; // [OUT] flags: is_eof, is_write_stablestruct vres vread(struct vio *ios, int n);struct vres vwrite(struct vio *ios, int n);

vNFS talk (FAST’17) 22March 2, 2017

vread/vwrite

l Read/write many filesu Unlike readv/writev(2): many (non-contiguous) offsets

of many filesu Append to file when write offset is UINT64_MAX

l Automatic file opening/closingu Pass states using “current filehandle” and “current stateid”

struct vio {struct vfile vfile; // [IN]: a file identified by path or descriptoruint64_t offset; // [IN]: offset of read/write, UINT64_MAX means appenduint64_t length; // [IN]: bytes to read/write; [OUT]: bytes read/writtenconst char *data; // [IN]: data to write; [OUT]: buffer for readuint32_t flags; // [IN] flags: is_creation, is_write_stable

}; // [OUT] flags: is_eof, is_write_stablestruct vres vread(struct vio *ios, int n);struct vres vwrite(struct vio *ios, int n);

vNFS talk (FAST’17) 23March 2, 2017

vread/vwrite

l Read/write many filesu Unlike readv/writev(2): many (non-contiguous) offsets

of many filesu Append to file when write offset is UINT64_MAX

l Automatic file opening/closingu Pass states using “current filehandle” and “current stateid”

struct vio {struct vfile vfile; // [IN]: a file identified by path or descriptoruint64_t offset; // [IN]: offset of read/write, UINT64_MAX means appenduint64_t length; // [IN]: bytes to read/write; [OUT]: bytes read/writtenconst char *data; // [IN]: data to write; [OUT]: buffer for readuint32_t flags; // [IN] flags: is_creation, is_write_stable

}; // [OUT] flags: is_eof, is_write_stablestruct vres vread(struct vio *ios, int n);struct vres vwrite(struct vio *ios, int n);

vNFS talk (FAST’17) 24March 2, 2017

vgetattrs/vsetattrs

l vgetattrs: get attributes of filesl vsetattrs: set attributes of files

u Useful for copying attributes of files, e.g., tar and rsyncu Combines chmod, chown, utimes, truncateu Linux kernel uses inode_operations->setattru NFSv4 uses the SETATTR operation

Page 5: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 25March 2, 2017

vgetattrs/vsetattrs

l vgetattrs: get attributes of filesl vsetattrs: set attributes of files

u Useful for copying attributes of files, e.g., tar and rsyncu Combines chmod, chown, utimes, truncateu Linux kernel uses inode_operations->setattru NFSv4 uses the SETATTR operation

vNFS talk (FAST’17) 26March 2, 2017

vgetattrs/vsetattrs

l vgetattrs: get attributes of filesl vsetattrs: set attributes of files

u Useful for copying attributes of files, e.g., tar and rsyncu Combines chmod, chown, utimes, truncateu Linux kernel uses inode_operations->setattru NFSv4 uses the SETATTR operation

vNFS talk (FAST’17) 27March 2, 2017

l Copy many files partly or entirelyu Create destination files if necessary

l vcopy

l vsscopy (Server Side Copy in NFSv4.2)

vcopy/vsscopy

READ “src1”; READ “src2”

data read from “src1” and “src2”

WRITE ”dst1”; WRITE “dst2”

#bytes written to “dst1” and “dst2”

COPY “src1” to “dst1”; COPY “src2” to “dst2”

#bytes copied from “src1” to “dst1”, “src2” to “dst2”

vNFS talk (FAST’17) 28March 2, 2017

l Copy many files partly or entirelyu Create destination files if necessary

l vcopy

l vsscopy (Server Side Copy in NFSv4.2)

vcopy/vsscopy

READ “src1”; READ “src2”

data read from “src1” and “src2”

WRITE ”dst1”; WRITE “dst2”

#bytes written to “dst1” and “dst2”

COPY “src1” to “dst1”; COPY “src2” to “dst2”

#bytes copied from “src1” to “dst1”, “src2” to “dst2”

vNFS talk (FAST’17) 29March 2, 2017

l Copy many files partly or entirelyu Create destination files if necessary

l vcopy

l vsscopy (Server Side Copy in NFSv4.2)

vcopy/vsscopy

READ “src1”; READ “src2”

data read from “src1” and “src2”

WRITE ”dst1”; WRITE “dst2”

#bytes written to “dst1” and “dst2”

COPY “src1” to “dst1”; COPY “src2” to “dst2”

#bytes copied from “src1” to “dst1”, “src2” to “dst2”

vNFS talk (FAST’17) 30March 2, 2017

l Copy many files partly or entirelyu Create destination files if necessary

l vcopy

l vsscopy (Server Side Copy in NFSv4.2)

vcopy/vsscopy

READ “src1”; READ “src2”

data read from “src1” and “src2”

WRITE ”dst1”; WRITE “dst2”

#bytes written to “dst1” and “dst2”

COPY “src1” to “dst1”; COPY “src2” to “dst2”

#bytes copied from “src1” to “dst1”, “src2” to “dst2”

Page 6: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 31March 2, 2017

l Copy many files partly or entirelyu Create destination files if necessary

l vcopy

l vsscopy (Server Side Copy in NFSv4.2)

vcopy/vsscopy

READ “src1”; READ “src2”

data read from “src1” and “src2”

WRITE ”dst1”; WRITE “dst2”

#bytes written to “dst1” and “dst2”

COPY “src1” to “dst1”; COPY “src2” to “dst2”

#bytes copied from “src1” to “dst1”, “src2” to “dst2”

vNFS talk (FAST’17) 32March 2, 2017

Other Operationsl vopen/vclose

u Large filesu Maintain close-to-open consistency

l vsymlink/vreadlink/vhardlinku Example: create a symlink tree: “cp -sr”

l vmkdir/vlistdiru Example: create “/a”, “/a/b”, and ”/a/b/c”uvlistdir: list multiple directories (recursively)

l vremovel vrename

vNFS talk (FAST’17) 33March 2, 2017

Other Operationsl vopen/vclose

u Large filesu Maintain close-to-open consistency

l vsymlink/vreadlink/vhardlinku Example: create a symlink tree: “cp -sr”

l vmkdir/vlistdiru Example: create “/a”, “/a/b”, and ”/a/b/c”uvlistdir: list multiple directories (recursively)

l vremovel vrename

vNFS talk (FAST’17) 34March 2, 2017

Other Operationsl vopen/vclose

u Large filesu Maintain close-to-open consistency

l vsymlink/vreadlink/vhardlinku Example: create a symlink tree: “cp -sr”

l vmkdir/vlistdiru Example: create “/a”, “/a/b”, and ”/a/b/c”uvlistdir: list multiple directories (recursively)

l vremovel vrename

vNFS talk (FAST’17) 35March 2, 2017

Other Operationsl vopen/vclose

u Large filesu Maintain close-to-open consistency

l vsymlink/vreadlink/vhardlinku Example: create a symlink tree: “cp -sr”

l vmkdir/vlistdiru Example: create “/a”, “/a/b”, and ”/a/b/c”uvlistdir: list multiple directories (recursively)

l vremovel vrename

vNFS talk (FAST’17) 36March 2, 2017

Other Operationsl vopen/vclose

u Large filesu Maintain close-to-open consistency

l vsymlink/vreadlink/vhardlinku Example: create a symlink tree: “cp -sr”

l vmkdir/vlistdiru Example: create “/a”, “/a/b”, and ”/a/b/c”uvlistdir: list multiple directories (recursively)

l vremovel vrename

Page 7: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 37March 2, 2017

Architecture

ApplicationsNFS Server

NFS Client

Networking(TCP/IP)

vNFS ClientvNFS Lib

NetworkVFS

UserKernel

vNFS talk (FAST’17) 38March 2, 2017

Architecture

ApplicationsNFS Server

NFS Client

Networking(TCP/IP)

vNFS ClientvNFS Lib

NetworkVFS

UserKernel

vNFS talk (FAST’17) 39March 2, 2017

Architecture

ApplicationsNFS Server

NFS Client

Networking(TCP/IP)

vNFS ClientvNFS Lib

NetworkVFS

non-NFSv4 filesPOSIX APIUser

Kernel

vNFS talk (FAST’17) 40March 2, 2017

Architecture

ApplicationsNFS Server

NFS Client

Networking(TCP/IP)

vNFS ClientvNFS Lib

NetworkVFS

non-NFSv4 filesPOSIX API

NFSv4 filesvNFS API

UserKernel

vNFS talk (FAST’17) 41March 2, 2017

Architecture

ApplicationsNFS Server

NFS Client

Networking(TCP/IP)

vNFS ClientvNFS Lib

NetworkVFS

non-NFSv4 filesPOSIX API

NFSv4 filesvNFS API

socketUserKernel

vNFS talk (FAST’17) 42March 2, 2017

Implementationl NFS-Ganesha

u An open-source user-space NFS serveru File-System Abstraction Layer (FSAL) that is similar to VFS

l Client sideu vNFS client based on NFS-Ganesha Proxy FSAL (NFSv4.1)u vNFS libraryu No client-side cache yet

l Server sideu NFS-Ganesha VFS FSALu Server Side Copy & atomic file appending

l Code u C/C++: added 10,632 to NFS-Ganesha; deleted 1,407u https://github.com/sbu-fsl/txn-compound

Page 8: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 43March 2, 2017

Implementationl NFS-Ganesha

u An open-source user-space NFS serveru File-System Abstraction Layer (FSAL) that is similar to VFS

l Client sideu vNFS client based on NFS-Ganesha Proxy FSAL (NFSv4.1)u vNFS libraryu No client-side cache yet

l Server sideu NFS-Ganesha VFS FSALu Server Side Copy & atomic file appending

l Code u C/C++: added 10,632 to NFS-Ganesha; deleted 1,407u https://github.com/sbu-fsl/txn-compound

vNFS talk (FAST’17) 44March 2, 2017

Implementationl NFS-Ganesha

u An open-source user-space NFS serveru File-System Abstraction Layer (FSAL) that is similar to VFS

l Client sideu vNFS client based on NFS-Ganesha Proxy FSAL (NFSv4.1)u vNFS libraryu No client-side cache yet

l Server sideu NFS-Ganesha VFS FSALu Server Side Copy & atomic file appending

l Code u C/C++: added 10,632 to NFS-Ganesha; deleted 1,407u https://github.com/sbu-fsl/txn-compound

vNFS talk (FAST’17) 45March 2, 2017

Implementationl NFS-Ganesha

u An open-source user-space NFS serveru File-System Abstraction Layer (FSAL) that is similar to VFS

l Client sideu vNFS client based on NFS-Ganesha Proxy FSAL (NFSv4.1)u vNFS libraryu No client-side cache yet

l Server sideu NFS-Ganesha VFS FSALu Server Side Copy & atomic file appending

l Code u C/C++: added 10,632 to NFS-Ganesha; deleted 1,407u https://github.com/sbu-fsl/txn-compound

vNFS talk (FAST’17) 46March 2, 2017

Evaluationl Experimental setup

u Two six-core machines with 64GB RAM and a 10GbE NICu Running CentOS 7 with 3.14 kernelu Intel S3700 200GB SSDu Network latency of 0.2msu Use netem to emulate different networksu Baseline: Linux in-kernel NFSv4.1 client

l Benchmarks & application portingu Micro-benchmarks u GNU Coreutils (cp, ls, rm)u Tar/Untaru Filebenchu HTTP/2 server (nghttp2)

vNFS talk (FAST’17) 47March 2, 2017

Evaluationl Experimental setup

u Two six-core machines with 64GB RAM and a 10GbE NICu Running CentOS 7 with 3.14 kernelu Intel S3700 200GB SSDu Network latency of 0.2msu Use netem to emulate different networksu Baseline: Linux in-kernel NFSv4.1 client

l Benchmarks & application portingu Micro-benchmarks u GNU Coreutils (cp, ls, rm)u Tar/Untaru Filebenchu HTTP/2 server (nghttp2)

vNFS talk (FAST’17) 48March 2, 2017

Evaluationl Experimental setup

u Two six-core machines with 64GB RAM and a 10GbE NICu Running CentOS 7 with 3.14 kernelu Intel S3700 200GB SSDu Network latency of 0.2msu Use netem to emulate different networksu Baseline: Linux in-kernel NFSv4.1 client

l Benchmarks & application portingu Micro-benchmarks u GNU Coreutils (cp, ls, rm)u Tar/Untaru Filebenchu HTTP/2 server (nghttp2)

Page 9: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 49March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

vNFS talk (FAST’17) 50March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

vNFS talk (FAST’17) 51March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

vNFS talk (FAST’17) 52March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

vNFS talk (FAST’17) 53March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

4✕

vNFS talk (FAST’17) 54March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

4✕ 2✕

Page 10: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 55March 2, 2017

GNU Coreutils (cp)l Copy the Linux source tree (cp -r)

62✕

4✕ 2✕

vNFS talk (FAST’17) 56March 2, 2017

GNU Coreutils (ls, cp, rm)

vNFS talk (FAST’17) 57March 2, 2017

GNU Coreutils (ls, cp, rm)

vNFS talk (FAST’17) 58March 2, 2017

GNU Coreutils (ls, cp, rm)

vNFS talk (FAST’17) 59March 2, 2017

GNU Coreutils (ls, cp, rm)

vNFS talk (FAST’17) 60March 2, 2017

GNU Coreutils (ls, cp, rm)

2.5—12✕

7—106✕

16—259✕

Page 11: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 61March 2, 2017

GNU Coreutils (ls, cp, rm)

2.5—12✕

7—106✕

16—259✕

cp: ++170 and --16 in Cls: ++392 and --203 in Crm: ++21 and --1 in C

vNFS talk (FAST’17) 62March 2, 2017

Compounding Degree

Network Latency: 0.2ms

vNFS talk (FAST’17) 63March 2, 2017

Compounding Degree

Network Latency: 0.2ms

vNFS talk (FAST’17) 64March 2, 2017

Compounding Degree

Comparable orSlightly better Network Latency: 0.2ms

vNFS talk (FAST’17) 65March 2, 2017

Compounding Degree

0.86—7.6✕

2.1—16.7✕

2—47✕

1—2.6✕

Comparable orSlightly better Network Latency: 0.2ms

vNFS talk (FAST’17) 66March 2, 2017

Compounding Degree

0.86—7.6✕

2.1—16.7✕

2—47✕

1—2.6✕

Comparable orSlightly better

Much better

Network Latency: 0.2ms

Page 12: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 67March 2, 2017

Compounding Degree

0.86—7.6✕

2.1—16.7✕

2—47✕

1—2.6✕

Comparable orSlightly better

Much better

Network Latency: 0.2ms

vNFS talk (FAST’17) 68March 2, 2017

Filebench Workloads

vNFS talk (FAST’17) 69March 2, 2017

Filebench Workloads

4.4—5.2✕

vNFS talk (FAST’17) 70March 2, 2017

Filebench Workloads

4.4—5.2✕

0.87—4.8✕

vNFS talk (FAST’17) 71March 2, 2017

Filebench Workloads

4.4—5.2✕

0.87—4.8✕

1.8—14✕

vNFS talk (FAST’17) 72March 2, 2017

Filebench Workloads

4.4—5.2✕

0.87—4.8✕

1.8—14✕

Filebench: ++759 and --37 in C

Page 13: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 73March 2, 2017

HTTP/2 Server

HTTP/2 Server(NFS Client)

WebClient

READ “1.jpg”; READ “2.jpg”…

data of “1.jpg”; “2.jpg”…

NFSServer

HTTP/2 PUSH

HTTP/2 GET

The HTTP/2 server reads and pushes a typical Web page that contains 96 objects (html, jpg, js, css)totaling round 2MB.

vNFS talk (FAST’17) 74March 2, 2017

HTTP/2 Server

3.5—9.9✕

HTTP/2 Server(NFS Client)

WebClient

READ “1.jpg”; READ “2.jpg”…

data of “1.jpg”; “2.jpg”…

NFSServer

HTTP/2 PUSH

HTTP/2 GET

The HTTP/2 server reads and pushes a typical Web page that contains 96 objects (html, jpg, js, css)totaling round 2MB.

vNFS talk (FAST’17) 75March 2, 2017

HTTP/2 Server

nghttp2: ++543 and --108 in C++

3.5—9.9✕

HTTP/2 Server(NFS Client)

WebClient

READ “1.jpg”; READ “2.jpg”…

data of “1.jpg”; “2.jpg”…

NFSServer

HTTP/2 PUSH

HTTP/2 GET

The HTTP/2 server reads and pushes a typical Web page that contains 96 objects (html, jpg, js, css)totaling round 2MB.

vNFS talk (FAST’17) 76March 2, 2017

Conclusionsl A set of vectorized file-system API to take

advantage of NFSv4 compound procedures without changing NFS protocols or servers

l Implemented vNFS in user-spacel Porting applications was generally easyl Improved performance by up to 200�l vNFS made NFS more usable in high-latency

networks

vNFS talk (FAST’17) 77March 2, 2017

Conclusionsl A set of vectorized file-system API to take

advantage of NFSv4 compound procedures without changing NFS protocols or servers

l Implemented vNFS in user-spacel Porting applications was generally easyl Improved performance by up to 200�l vNFS made NFS more usable in high-latency

networks

vNFS talk (FAST’17) 78March 2, 2017

Conclusionsl A set of vectorized file-system API to take

advantage of NFSv4 compound procedures without changing NFS protocols or servers

l Implemented vNFS in user-spacel Porting applications was generally easyl Improved performance by up to 200�l vNFS made NFS more usable in high-latency

networks

Page 14: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 79March 2, 2017

Conclusionsl A set of vectorized file-system API to take

advantage of NFSv4 compound procedures without changing NFS protocols or servers

l Implemented vNFS in user-spacel Porting applications was generally easyl Improved performance by up to 200�l vNFS made NFS more usable in high-latency

networks

vNFS talk (FAST’17) 80March 2, 2017

Conclusionsl A set of vectorized file-system API to take

advantage of NFSv4 compound procedures without changing NFS protocols or servers

l Implemented vNFS in user-spacel Porting applications was generally easyl Improved performance by up to 200�l vNFS made NFS more usable in high-latency

networks

vNFS talk (FAST’17) 81March 2, 2017

Conclusionsl A set of vectorized file-system API to take

advantage of NFSv4 compound procedures without changing NFS protocols or servers

l Implemented vNFS in user-spacel Porting applications was generally easyl Improved performance by up to 200�l vNFS made NFS more usable in high-latency

networks

vNFS talk (FAST’17) 82March 2, 2017

Limitations and Future Workl Client-side caching (appending)l Transactional compoundsl Parallel processing of operations

vNFS talk (FAST’17) 83March 2, 2017

Limitations and Future Workl Client-side caching (appending)l Transactional compoundsl Parallel processing of operations

vNFS talk (FAST’17) 84March 2, 2017

Limitations and Future Workl Client-side caching (appending)l Transactional compoundsl Parallel processing of operations

Page 15: Client Server - USENIX · Ming Chen,Dean Hildebrand,ÏHenry Nelson,å JasmitSaluja, Ashok SankarHariharaSubramony, and ErezZadok Stony Brook University, Ï IBM Research –Almaden,

vNFS talk (FAST’17) 85March 2, 2017

Limitations and Future Workl Client-side caching (appending)l Transactional compoundsl Parallel processing of operations

vNFS talk (FAST’17) 86March 2, 2017

vNFS: Maximizing NFS Performance with Compounds and Vectorized I/O

https://github.com/sbu-fsl/txn-compound

Q&AMing Chen, Dean Hildebrand, Henry Nelson,

Jasmit Saluja, Ashok Sankar Harihara Subramony, and Erez Zadok

© 2017 Stony Brook University