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
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
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
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
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”
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
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
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)
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✕
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✕
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
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
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
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
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