iSCSI-SCST Storage Server Usermode Adaptation
 
David A. Butterfield — February 2017
 
Abstract
 
This paper describes an adaptation of the iSCSI-SCST storage server software to run entirely in usermode on an unmodified Linux kernel; performance measurements and model; and an experimental algorithm to improve performance for small Read operations. The Appendix lists a few issues discovered in the SCST source code.
In a standard installation of SCST the iscsi-scstd daemon runs as a single-threaded Linux usermode process that cooperates with the kernel-resident SCST implementation using ioctl(2) and netlink(7) for communication.
In the iSCSI-SCST Usermode Adaptation the iscsi-scstd daemon runs on the main thread in a multi-threaded process in which other usermode threads are concurrently providing the services and executing the SCST code that would be running inside the kernel in a standard installation of SCST.
The subset of SCST used includes the SCST Core, the iSCSI daemon and kernel logic, the vdisk device, and the /proc interface; comprising about 80,000 lines of code. To support running in usermode, around 55 (fifty-five) lines of executable C code have been added or changed under #ifdef in SCST source files.
For a single session over 1 Gb Ethernet being serviced by a single 2.4 GHz CPU: the described Adaptive Nagle optimization improves peak throughput performance for 512-Byte Random Read of /dev/zero from around 63,000 IOPS to more than 100,000 IOPS, with no adverse impact below Queue Depth 17.

Contents 1Introduction
2Motivation
2Implemented Functionality
2Implementation Overview
4Threading
5CPU Assignments
6Performance Measurements
8Experimental Performance Improvement for Small Read Sizes
17Performance Model
35SCST Issues Discovered (Summary)
35Sample top(1) Display
36Sample Content from /fuse/scst/proc/scsi_tgt
37Sample Logging (Startup, before scstadmin)
37Sample Logging (Startup, during scstadmin)
38Sample Logging (Startup, after scstadmin)
38Sample Logging (Shutdown, SIGINT-->exit)
39Initiator and Server Machine Settings
40Appendix: SCST Issues Discovered

Paper (PDF) 1 Part 1: Adaptation and Performance Measurements
17 Part 2: Performance Model
35 Part 3: Displays, Logs, Listings
CODE

Diagrams (PDF) 1 Datapath of SCST Configured with iSCSI and VDISK
3 SCST Usermode Adaptation Service Map
4 SCST Usermode Adaptation Compiler and Linker Inclusions
21 iSCSI Operation Flow
23 Abstracted Operation Pipeline Stages
24 Server / Remote Initiator: Network Round Trip
26 Network Round Trip Template
27 Server / Local Initiator: External Loopback Network Round Trip

About the Author
David Butterfield  [david.butterfield@acm.org]  began programming for usermode in 2008 after a prior gigasecond or so working on software in various versions of the Unix and Solaris kernels (or without any kernel). He holds an MSc in Computer Science from UCLA, where his undergraduate degree was in Mathematics and Computer Science.
One of the founders of Locus Computing Corporation, he designed the first Virtual Machine Monitor for x86, to "Merge" MS-DOS and its applications under Unix SVR2; and led an engineering team in its implementation. The OS-Merge product was first marketed by AT&T under the name "Simultask" on their 6300+ (IBM AT clone) model. [Sometime after his involvement that product evolved into two descendant products known as NeTraverse Merge and Win4Lin]
He joined Sun Microsystems to establish and lead the first Solaris x86 device driver development team, later accepting an international assignment to Dublin, Ireland to start another driver engineering team there.
Back in the U.S., at LeftHand Networks he contributed many performance improvements to the SAN/iQ event-driven distributed storage application, introducing application-transparent multi-threading into the existing single-threaded event framework and devising other optimizations amounting in total to a 2.5x increase in throughput (IOPS) capability. Some of his diagrams were said to inspire awe.
His most recent (unpaid) project is described in this paper. He is presently looking for an interesting (well-paid) project.