Physics Computer Group • Help & Support
Austin, TX  •  16:33 (CDT)  •  13°C/55°F
Get help with…
Printing
E-mail
Software
Accounts
Everything else
How to Contact Us
help@physics.utexas.edu
(512) 471-5821 • RLM 7.126
Most Popular Tasks
Download Mathematica
Print to the Department’s printers
Configure your e-mail client for Physics
Connect to the UT wireless network
Diagnose (and fix) quota issues
Links to Other Useful Sites
Physics webmail portal
PMCL (student computer lab)
BevoWare (free antivirus & utilities)
ANTS Load-Balancing Software

The ANTS Load-Balancing System is software which will allow you to run your non-interactive jobs on one or more of the Graduate Computer Lab computers (linux1 through linux15), automatically choosing the machine(s) to execute your job on based on which are best suited for your job at the time you request execution. You simply log in to any of the machines and request that ANTS execute your job; ANTS takes care of finding the best suited machine to run it on and executing it there. All output is directed to your local terminal window, just as if it were executing on your local machine.

At this time, you cannot run jobs which need user input or which run in X11; ANTS is currently only useful for “non-interactive” jobs which don’t require user input. There is also currently no job-monitoring software available. In the future, there should be support for these features (but no date is set for implementing them at this time); but see also the section on interactive jobs, below.

ANTS versus Queues

ANTS takes a different approach from that of traditional Queue or Batch systems; your job is not queued—it is executed immediately if any suitable host (for the given job type) can be found. This makes the system suitable for execution of a large number of small jobs, such as building software via make (parallel compiles, etc.). A traditional queue system will often take up too much time managing its queues and scheduling the jobs to allow tasks such as large-scale compilations to gain any speed advantage; ANTS addresses this issue by virtue of its low overhead and immediate execution of your commands.

What are the job types?

We currently support three job types (although only two have any real effect). These are:

cpu — A CPU-intensive job, which will run on any machine.

memory — A memory-intensive job, which will run on any machine.

long — A long-running job, which will run on linux2 or linux15.

At this time, each host is configured to prefer running at most three jobs of a given type, and to allow a hard limit of at most five jobs of a given type. These numbers were picked as rather arbitrary limits; however, this means that ANTS could possibly not be able to find a machine to run your job on in the class you specify. In the unlikely event that this were to happen, your choices would be either to wait and try again; to try a different job type; or to run your program without using ANTS. These limits are subject to change if we find they are causing problems of any kind.

How to use ANTS

You request ANTS to run a job by using the rant command, which has the following format:

rant -t type command

For example, to run the command gcc -c prog.c using the job type of “cpu,” you would use:

rant -t cpu gcc -c prog.c

Parallel compiles with make

If you have a program which is built with make and you want to build it across multiple machines, you can modify the compiler tool definitions in the Makefile as follows:

LD  = rant -t cpu ld

CC  = rant -t cpu gcc

CPP = rant -t cpu $(CC) -E

AR  = rant -t cpu ar

Then invoke the make command with a command line such as make -j5. The -j5 argument to make tells it the number of jobs (commands) to run simultaneously. In this example, it says to run five simultaneous commands. Since the commands are processed through rant, they should run on (up to) five different machines, which should provide a significant speed increase in your total compilation process.

Note: The above command redefinitions are only for the most popular and time-consuming commands found in most makefiles. In some cases, there may be additional commands that you can redefine to use rant that will improve performance even further (e.g. strip, objcopy, objdump, as, nm, etc.). Also, note we use -j5 here purely as an example; you might get better results using either more or fewer simultaneous jobs. Learning how and when to tune such things for your best performance (and having the least impact on other users) is best learned from experience (i.e., trial and error).

What about interactive jobs?

ANTS does not currently support interactive jobs that need user input. However, you can still use ANTS to decide where to manually log in and run such jobs.

You can get a fairly good idea of where to run a job of a specific type (the “cpu” type, in this example) by using the following command:

rant -t cpu hostname

This would return the output of the hostname command, run on the most suitable machine for a job of type “cpu” at the time it was run. You can then log in to that machine and run your job there (manually). In this way, you can use ANTS to help find the best place to run your interactive jobs, even though you cannot using ANTS itself to run them.

How to I find out more?

The best way to learn about ANTS is to just start using it and to learn as you go. If you have questions about it, or problems with it, you can contact us via e-mail at help@physics.utexas.edu for assistance.

Other Notes

Sometimes ants are found running in the Grad Lab outside of the GNU/Linux machines.

These can be unintentionally installed when users produce core dumps of food onto the floor, or through beverage overflow errors. Please keep the facilities clean to avoid unauthorized installations of ants or other system bugs.