Asterisk is a hybrid TDM and packet voice PBX (Private Branch eXchange) and IVR platform with ACD functionality. It acts as middleware between the Internet (IAX, SIP, MGCP, Skinny, H.323), telephony channels (like Zaptel, T1, PRI, E1, FXO, FXS, VoIP, VoFR, ISDN, modems, Internet Phone Jack, etc.), and applications (like voice-mail, conferencing, directories, MP3 players, intercoms, etc.). It has many advanced features such as a codec translation API. The base distribution includes several channel backends, as well as applications. However, the beauty of Asterisk is its ability to be extended using its APIs, dynamic module loader, and AGI scripting interface. End users can even write their own applications that run on the system in C or any scripting language of their choice.
auto nice daemon activates itself in certain intervals, and renices jobs according to their priority, and CPU usage. Jobs owned by root are left alone. Jobs are never increased in their priority. It is very flexible. The renice intervals can be adjusted, as well as the default nice level, and the activation intervals. A priority database stores user/group/job tuples along with their renice values for three CPU usage time ranges. The strategy for searching the priority database can be configured. Linux, OpenBSD, FreeBSD, Digital UNIX, Solaris, and IRIX are supported.
ClusterNFS is a set of patches for the "Universal NFS Daemon" (UNFSD) to allow multiple clients to nfs mount the same root filesystem by providing "tagged" filenames. When a client requests the file "/path/filename", the ClusterNFS server checks for the existence of files of the form "/path/filename$$TAG=value$$". If such a file exists and the client has a matching value for KEY, this file is returned. If the client does not have a matching value or no such file exists, the file request proceeds as normal. Currently supported keys include HOST (hostname), IP (IP number), CLIENT (matches any nfs client) and CREATE (for "tagged" creation of files).
esky is an implementation of job freezing (checkpoint/resume) for Unix processes. It can save the state of a running process to disk then later resume it from the point it left off, possibly on a different machine. esky currently works on a limited but non-trivial range of processes. esky can cope with programs that open or mmap() files, including opening shared libraries with dlopen(). esky is implemented entirely in userspace - no kernel patches or modules are required. It works under Linux 2.2 and Solaris 2.6 and is written to be independent of CPU type.
LAM/MPI is an implementation of the Message Passing Interface (MPI) parallel standard that is especially friendly to clusters. It includes a persistent runtime environment for parallel programs, support for all of MPI-1, and a good chunk of MPI-2, such as all of the dynamic functions, one-way communication, C++ bindings, and MPI-IO.
Heartbeat is a full-function high-availability system for Linux and other POSIX-like OSes. It monitors services and restarts them on errors. When managing a cluster (more than 1 machine), it will also monitor the members of the cluster and begin recovery of lost services in less than a second. It runs over serial ports and UDP broadcast/multicast, as well as OpenAIS multicast. It is easily adapted to different interconnect media and protocols. When used in a cluster, it can operate using shared disks, data replication, or no data sharing. Versions starting with 2.0 are comparable to any commercial HA package, providing resource monitoring, larger clusters, and detailed dependency information.
mod_backhand is a load balancing module for Apache. It provides per-request HTTP redirection within a heterogeneous Apache server cluster. Each request is processed and run through a set of "candidacy functions" to determine which server is best suited to respond. The request is then proxied to that server. Facilities are in place to allow you to write your own dynamically loadable decision making algorithms. Everything about the request and the current availability of resources can be used in the decision-making process.