Distributed computing continues to be an alphabet-soup of services and protocols for managing computation and storage. To live in this environment, applications require middleware that can transparently adapt standard interfaces to new distributed systems; such software is known as an interposition agent. In this paper, we present several lessons learned about interposition agents via a progressive study of design possibilities. Although performance is an important concern, we pay special attention to less tangible issues such as portability, reliability, and compatibility. We begin with a comparison of seven methods of interposition, focusing on one method, the debugger trap, that requires special techniques to achieve acceptable performance on popular operating systems. Using this method, we implement a complete interposition agent, Parrot, that splices existing remote I/O systems into the namespace of standard applications. The primary design problem of Parrot is the mapping of fixed application semantics into the semantics of the available I/O systems. We offer a detailed discussion of how errors and other unexpected conditions must be carefully managed in order to keep this mapping intact. We conclude with a evaluation of the performance of the I/O protocols employed by Parrot, and use an Andrew-like benchmark to demonstrate that semantic differences have consequences in performance. 1.
|
701
|
Scale and Performance in Distributed File Systems
– Howard, Kazar, et al.
- 1988
|
|
325
|
The Paradyn parallel performance measurement tools
– Miller, Callaghan, et al.
- 1995
|
|
294
|
A Secure Environment for Untrusted Helper Applications
– Goldberg, Wagner, et al.
- 1996
|
|
238
|
A new kernel foundation for UNIX development
– Mach
- 1986
|
|
188
|
Vnodes: An Architecture for Multiple File System Types
– Kleiman
- 1986
|
|
177
|
The SDSC storage resource broker
– Baru, Moore, et al.
- 1998
|
|
147
|
Scale and performance in the Denali isolation kernel
– Whitaker, Shaw, et al.
- 2002
|
|
143
|
Interposition Agents: Transparently Interposing User Code at the System Interface
– Jones
- 1992
|
|
127
|
Supporting checkpointing and process migration outside the Unix kernel
– Litzkow, Solomon
- 1992
|
|
126
|
GASS: A data movement and access service for wide area computing systems
– Bester, Foster, et al.
- 1999
|
|
99
|
Detours: Binary Interception of Win32 Functions
– Hunt
- 1998
|
|
74
|
Interposed request routing for scalable network storage
– Anderson, Chase, et al.
- 2000
|
|
74
|
Replica selection in the globus data grid
– Vazhkudai, Tuecke, et al.
- 2001
|
|
71
|
The kangaroo approach to data movement on the grid
– Thain, Basney, et al.
- 2001
|
|
68
|
A comparison of OS extension technologies
– Small, Seltzer
- 1996
|
|
63
|
Traps and pitfalls: Practical problems in system call interposition based security tools
– Garfinkel
- 2003
|
|
51
|
Reliable network connections
– Zandy, Miller
- 2002
|
|
46
|
UFO: A personal global file system based on user-level extensions to the operating system
– Alexandrov, Ibel, et al.
- 1998
|
|
39
|
Protocols and services for distributed data-intensive science
– Allcock, Chervenak, et al.
- 2000
|
|
35
|
Providing resource management services to parallel applications
– Pruyne, Livny
- 1994
|
|
34
|
Multiple Bypass: Interposition agents for distributed computing
– Thain, Livny
|
|
28
|
Pipeline and Batch Sharing in Grid Workloads
– Thain, Bent, et al.
- 2003
|
|
27
|
Flexibility, manageability, and performance in a grid storage appliance
– Bent, Venkataramani, et al.
- 2002
|
|
27
|
Matchmaking Frameworks for Distributed Resource Management
– Raman
- 2000
|
|
25
|
Grid-based file access: The Legion I/O model
– White, Grimshaw, et al.
- 2000
|
|
25
|
Process hijacking
– Zandy, Miller, et al.
- 1999
|
|
20
|
UIO: A Uniform I/O System Interface for Distributed Systems
– Cheriton
- 1987
|
|
19
|
Utilizing widely distributed computational resources efficiently with execution domains
– Basney, Livny, et al.
- 2001
|
|
9
|
Error scope on a computational grid
– Thain, Livny
- 2002
|
|
8
|
dCache, a distributed storage data caching system
– Ernst, Fuhrmann, et al.
- 2001
|
|
7
|
CASTOR project status
– Barring, Baud, et al.
- 2000
|
|
7
|
Establishing persistent identity using the handle system
– Sun
- 2001
|
|
6
|
Protocol independence using the sockets API
– Metz
- 2002
|
|
6
|
Grid Data Management Pilot
– Samar, Stockinger
- 2001
|
|
6
|
The discipline and method architecture for reusable libraries
– Vo
- 2000
|
|
4
|
SOCKS protocol version 5. Internet Engineering Task Force (IETF) Request for Commends (RFC
– Leech, Ganis, et al.
- 1928
|
|
3
|
The tool daemon protocol (TDP
– Miller, Cortes, et al.
- 2003
|
|
2
|
A proposed solution to the problem of levels in errormessage generation
– Efe
- 1987
|