-*- mode: Text -*- CPU Broker Tim Stack, Eric Eide, John Regehr, Jay Lepreau The Flux Research Group University of Utah http://www.cs.utah.edu/flux/ +1 (801) 585-3271 June 2004 The CPU Broker is a reservation-based resource manager for CPU time. The broker mediates between multiple real-time applications and the facilities of an underlying real-time operating system: it implements a configurable CPU management policy, monitors resource use, and adjusts allocations over time. This architecture helps to ensure that the quality of service (QoS) needs of "important" applications are satisfied, especially when the relative importance of applications changes dynamically. An additional and important benefit is that the broker can automatically determine many of the scheduling parameters of its client applications. The CPU Broker is implemented as a CORBA server that uses the TimeSys Linux resource kernel APIs to manage CPU reservations. The CPU Broker is distributed under the GNU General Public License; see the file named `COPYING' for details. PREREQUISITES ------------- The package will build without these software packages, however, it will result in reduced functionality. TimeSys Linux v3.1: Used to make CPU reservations. Java 1.2+: Used to compile helper classes and CORBA interface stubs. ACE v5.4 and TAO 1.4: Provides support for CORBA in C++. Used to facilitate communication between a real-time server and the broker, as well as the different components of the broker. QuO 3.0.11: Provides support for quality of service in CORBA. Used to interpose on a real-time server so as to connect it to the broker. JacORB 1.3.30: Provides support for CORBA in Java. Used to generate stubs so that Java servers can interact with the broker. MIT ATR: Provides an Automatic Target Recognition server. Used as a demonstration of the CPU Broker's capabilities. Also requires Java. omniORB v4.0.1 and omniORBpy 2.1: Used to compile CORBA interface stubs. PREREQUISITES FOR MAINTAINERS ----------------------------- autoconf 2.59, automake 1.8.2: Used to generate Makefiles. libtool 1.5.2: Used to handle dynamic loading of shared libraries. LaTeX, dvips, fig2dev (versions?): Used to generate the high-level documentation. gnuplot 3.7: Used to generate graphs for documentation and results for tests. doxygen 1.3.6: Used to generate documentation from the sources. CONFIGURATION ------------- The CPU Broker uses the standard 'configure' utility to adapt to the current host environment. Along with the standard options, the CPU Broker's configure script understands the following arguments: --prefix The installation prefix, defaults to '/usr/local/cpu-broker'. --enable-debug Enable run-time debugging machinery. Highly recommended. --with-ace Specify the ACE installation to use. By default the configure script will use the ACE_ROOT environment variable. --with-quo Specify the QuO installation to use. By default the configure script will use the QUO_ROOT environment variable. This option is only active if ACE is available. --with-jacorb Specify the JacORB installation to use. By default the configure script will use the JACORB_DIR environment variable. This option is only active if ACE is available. --with-atr-mit Specify the ATR install to use. --enable-maintainer-mode Enable 'maintainer mode' for the build tree, where maintainer mode means that the files generated by autoconf/automake will be regenerated during a 'make'. Highly recommended for development environments. The configure script will also pay attention to the following environment variables: JAVA_HOME The location of the JDK to use when compiling/running the Java components of the Broker. CFLAGS and CXXFLAGS Extra flags to pass to the C/C++ compiler. OMNIIDL The path to the OmniORB IDL compiler. QUOGEN The path to the "quogen" compiler. BUILDING -------- Everything should build cleanly, although what is actually built depends on which of the above prerequisites you have installed. KERNEL PATCHING --------------- Unfortunately, a small kernel patch is required for the Broker to work correctly on TimeSys Linux. You can apply the patch by entering the "rk_util/patch" directory and running: $ make install TIMESYS_ROOT="/path/to/timesys/sources" The patch contains its own documentation if you are interested in the details. TESTING ------- After the system has been built, you can test everything by running "make check". Hopefully, all of the test should pass and you can continue on to the installation. If not, we would appreciate it if you sent an e-mail containing your configuration, what tests failed, and how they failed. INSTALLATION ------------ Once you are satisfied that the broker is working correctly, you can install everything using: $ sudo make install The installation directory is determined by the value of the '--prefix' option as passed to configure, with the default being '/usr/local/cpu-broker'. We also provide some scripts for automatically adding the broker's binaries, manuals, and libraries to every users' paths. To activate them you simply create links in the system's '/etc/profile.d' directory to the files in the broker's 'etc/profile.d' directory, like so: $ sudo ln -s /usr/local/cpu-broker/etc/profile.d/* /etc/profile.d/ After logging out and back in, you should now be able to access the Broker's files easily. At this point, you will want to start reading the various man pages, starting with cpubroker(7): $ man cpubroker FILES ----- See the MANIFEST file in the current directory. HISTORY ------- June 22, 2004: Updated for 1.1 release. December 1, 2003: Updated for 1.0 release. September 2, 2003: Updated for 0.5 release. June 12, 2003: Initial revision.