ASTRAL is a formal specification language for real-time systems. The structuring mechanisms in ASTRAL allow one to build modularized specifications of complex systems with layering. A real-time system is modeled by a collection of state machine specifications and a single global specification. The ASTRAL Software Development Environment (SDE) is an integrated set of design and analysis tools based on the ASTRAL formal framework. The tools that make up the SDE are a syntax-directed editor, a specification processor, a verification condition generator, a browser kit, a model checker, and a mechanical theorem prover.
Ballast is a tool for balancing user load across SSH servers based on configurable criteria such as CPU load and system availability. Ballast is invoked as part of the SSH login process, hence has access to the user name, which is not available in traditional load balancers. This gives ballast the unique ability to perform user-specific load balancing, which has several benefits including separating users who have historically generated high loads and providing a common login interface to users who may be separated based on other criteria such as system accessibility. Ballast includes a simple client, a lightweight data server, and a data collection agent.
Dyper is a framework for enabling least privilege network security policies based on dynamic perimeter control. Dyper observes the behavior of network services to identify the specific inbound perimeter access that is required at any given time and dynamically adjusts the ACLs of a perimeter enforcer to open and close the perimeter accordingly. It supports inbound access for both clients and servers and is completely transparent to external users. Internal services must be invoked slightly differently, but no source code modifications nor changes to user usage patterns are required. Through the use of the Dyper framework, each site can have the tightest perimeter policy possible and yet still communicate at the highest bandwidth with almost any multiport application.
Mesh is a secure, lightweight grid middleware that is based on the addition of a single sign-on capability to the built-in public key authentication mechanism of SSH using system call interposition. Resources may be added to a Mesh-based grid in a matter of minutes using just five small files and two environment variable settings. Mesh adheres to fundamental security principles and was designed to be compatible with strong security mechanisms including two-factor authentication, SSH bastions, and restrictive firewalls. Mesh uses a remote command model, which is based on stock SSH clients and the syntax and commands already understood by users, thus requires no additional software or knowledge to utilize effectively. Several existing services have been integrated with Mesh to provide resource discovery and query, high performance file transfer, and job management.
Mutil is a set of standard utilities that employ multiple types of parallelism and other optimizations to achieve maximum performance on modern file systems. Multi-threading is used to ensure that nodes are kept as busy as possible. Double buffering allows individual operations within a single task to be overlapped using asynchronous I/O. Multi-node cooperation allows different nodes to take part in the same task. Split file processing allows multiple threads to operate concurrently on the same file. Finally, additional optimizations such as buffer management help eliminate other bottlenecks that can reduce performance. Mutil currently includes drop-in replacements for cp and md5sum from GNU coreutils, which have achieved 10/30x rates on one/many nodes.
The Naturalization Service is a service for automatically naturalizing user applications to grid resources. The functions of this service include (1) automatically identifying the dependencies of user applications with support for executables, shared libraries, Java classes, and Perl and Python programs, (2) establishing a suitable environment by transferring dependent software and setting key environment variables necessary for each application to run, and (3) managing a flexible software catalog, which is used to locate software dependencies based on both centrally managed and user controlled mappings.
Pieman is a command-line tool for managing personal information such as appointments, contacts, and tasks as well as other data such as notes and rc files. It is a portable pure-perl tool inspired by abook, devtodo, mutt, and pal, among others.
Pour is a general-purpose information service framework designed to accommodate a wide variety of information types with support for high volume, low frequency periodic updates, user-specified updates, and automatic updates collected on-demand when needed. Information is stored exclusively in XML and retrieved using standard XPath queries over a single unified namespace independent of the information's source.
Retools is a set of modifications to the commonly used open source utilities bzip2, gzip, rsync, and tar that automatically selects the Lustre stripe count for created and/or extracted files according to the sizes of the files involved. By striping large files over a higher number of physical disks and small files over a lower number, aggregate I/O bandwidth for large files is maximized and the impact to the file system due to small files is minimized.
Save is a lightweight framework for creating high availability systems. Save manages IP addresses shared between multiple servers with the same function and monitors the health of those servers to determine which should be actively servicing requests at any given time. Save has additional features to facilitate the administration of high availability systems. Synchronization mechanisms allow configuration files to be kept consistent between systems as well as allowing commands to be executed across all servers of a particular type. Archival mechanisms provide automatic version control of configuration files to aid in recovery in case of errant configuration. Validation mechanisms allow configuration files to be automatically checked for correctness before they are installed on all peer servers.
Savors is a visualization framework that supports the ingestion of data streams created by arbitrary command pipelines. Any number of data streams can be shown synchronized by time in the same or different views, which can be arranged in any layout. These capabilities combined with a powerful parallelization mechanism and interaction models already familiar to administrators allows Savors to display complex visualizations of data streamed from many different systems with minimal effort.
Screenwm is a window management extension to GNU Screen that adds (1) multiple region layouts within a single session, (2) vi-like movement within complex layouts, (3) window associations by region, and (4) control of remote/embedded sessions using standard key bindings.
Shift is a lightweight framework for high performance local and remote file transfers that provides resiliency across a wide variety of failure scenarios through various techniques. These include end-to-end integrity via cryptographic hashes, throttling of transfers to prevent resource exhaustion, balancing transfers across resources based on load and availability, and parallelization of transfers across multiple source and destination hosts for increased redundancy and performance.
Skip is a lightweight and portable tool for managing secrets such as login passwords and easily automating the programs that use them without leaving the secrets unencrypted on disk. Skip has been tested successfully with several common programs including fetchmail, getmail, msmtp, scp, ssh, and ssh-add without the need for any modification on Linux, OSX, and Windows under Cygwin.
Surfer is a general-purpose framework for selecting and ranking grid resources based on user constraints and preferences. Surfer has no built-in bias towards any job model or selection policy, thus is suitable for inclusion in any grid environment by adding information providers knowledgeable about that environment. Information is pulled from these providers as needed allowing Surfer to efficiently handle large and complex information sources unsuitable for push-based models.
Swim is a software information service for the grid built on top of Pour. Swim provides true software resource discovery integrated with the tools used by administrators to install software. In particular, software information is periodically gathered from native package managers on FreeBSD, Solaris, and IRIX as well as the RPM, Perl, and Python package managers on multiple platforms. Swim has additional facilities for collecting on-demand information about arbitrary software on any grid-enabled resource including software dependencies and Unix "stat" information.