| This is pounder30 as of 2011-08-09. Copyright (C) 2003-2011 IBM. |
| (Do not delete top line. It is used for version checking.) |
| |
| It would be a good idea to read this README file and the SCHEDULER and |
| CONFIGURATION files (in the doc/ directory) prior to dabbling with pounder! |
| |
| Licensing |
| ========= |
| All files in this tarball are licensed under the GPL. Please see |
| the file COPYING for more details. |
| |
| Contents |
| ======== |
| 1. Overview |
| 2. Getting Started |
| 3. Files and Directories |
| 4. The Install Script |
| 5. Configuration |
| 6. The Pounder Script |
| 7. Credits |
| |
| Overview |
| ======== |
| Pounder provides a framework for building, running, and logging results |
| for user-defined sets of tests. Almost any test or test suite may be run |
| as a subtest from within this framework, including the LTP test suite. |
| (For more guidelines on building, scheduling, and running user-defined |
| subtests, see doc/SCHEDULER) |
| |
| Getting Started |
| =============== |
| |
| Some sample test "schedules" comprised of various publically available |
| tests, including LTP, are provided. The default test schedule illustrates |
| how one might use pounder and is also a useful general purpose stress test. |
| |
| The following steps describe how to build and run the default schedule: |
| |
| 0. Install your operating system. gcc and related development packages are |
| required to build pounder. Missing dependencies will be identified at |
| build time. X development packages are needed for the included video test. |
| |
| 1. Download and unpack the LTP tarball. You've already done this. |
| |
| 2. cd tools/pounder21/. You've already done this too. |
| |
| 3. (optional) Set up a NFS server to export "/pounder21" (unless you wish |
| to skip nfs tests). |
| |
| 4. (optional) Modify any variables in "config" (see doc/CONFIGURATION for details). |
| |
| 5. Run "make install" to build tests for your machine |
| The Install script will attempt to build all the subtests in the |
| build_scripts folder. It will prompt you for the test scheduler |
| you want to unpack. Go ahead of type "default" or simply press |
| enter. It will then ask if you want to automate skipping of |
| failed subtests. If you enter "y", the script will automatically |
| delete any subtests from the test scheduler that fail to build. |
| If you enter "n", the script will prompt you each time a test |
| fails to build on whether or not to skip the failed test. |
| |
| 6. Run "./pounder" to start the tests (run "./pounder -h" for usage options). |
| |
| 7. Press ^C or run "./pounder -k" to stop the tests |
| The default scheduler runs tests for 48 hours, but you can set a new |
| duration in seconds by modifying config (see doc/CONFIGURATION for details) |
| or by using the -d option when starting pounder (./pounder -d <duration in seconds>) |
| |
| 8. Run "make mrclean" to restore everything to the state before the tarball |
| was unpacked (running this command will of course require you to |
| rebuild with "make install" for the next pounder run) |
| |
| See doc/SCHEDULER for details on defining the order in which tests are run, and whether they |
| are run serially or in parallel. |
| |
| A few of the sample subtests have prerequisites: |
| |
| - ide_cdrom_copy: Requires a CD with some data on it to be put in the drive. |
| |
| - nfs, ping_nfs: Make sure you can mount an NFS server. Specify NFS in config |
| or run "./pounder -n ipaddr" |
| |
| - xterm_stress: Make sure you can start X sessions. Enable X testing by setting |
| the DO_X_TESTS flag in config or run "./pounder -x" |
| |
| These tests can be skipped during the build phase if reqs aren't met though. |
| |
| Files and Directories |
| ===================== |
| Below are brief descriptions of the files and directories found under the pounder/ |
| directory. |
| |
| Files: |
| |
| CHANGELOG |
| - A log of changes made to pounder |
| COPYING |
| - GNU general public license info |
| Install |
| - The script used to build pounder |
| Makefile |
| - Makefile for pounder |
| debug.c |
| - Debugging routines used for logging pounder results |
| infinite_loop.c, timed_loop.c, fancy_timed_loop.c |
| - Procedures used to run tests repeatedly (see doc/SCHEDULER for more |
| information) |
| config |
| - Environment variables used for customizing pounder run are defined |
| here (see doc/CONFIGURATION for details) |
| libpounder.sh |
| - More environment variables defined here. Unlike the ones in config, |
| these are not meant to be modified by the user. (see doc/CONFIGURATION |
| for details) |
| nfs_logging |
| - Script that sets up user-defined NFS server for logging pounder output. |
| This script is executed when pounder is run with $NFS_LOGGING enabled in |
| config (see doc/CONFIGURATION) or when "pounder -r" is used. Normally when |
| running pounder, test output will be directly logged to $POUNDER_LOGLOCAL, |
| but with NFS logging enabled, output will instead be logged to user-specified |
| remote directory of an NFS server, $NFS_LOGSERVER:$NFS_LOGDIR. |
| See doc/CONFIGURATION for more information on these variables. |
| pounder |
| - Script used to run pounder. (see "The Pounder Script" section below |
| for details) |
| proclist.c |
| - Manages list of processes during pounder run. |
| README |
| - This file, which gives an overview of pounder's structure and how to |
| build and start pounder. |
| run.c |
| - Program to run the tests in the test scheduler. |
| |
| Directories: |
| |
| build_scripts/ |
| - Scripts to build your subtests go here. (see doc/SCHEDULER for details) |
| doc/ |
| - Contains the SCHEDULER file, which describes how to create, build, |
| schedule, and run your own tests with pounder. |
| - Contains the CONFIGURATION file, which describes pounder's environment |
| variables. |
| schedulers/ |
| - Test scheduler tarballs are in here. (see doc/SCHEDULER for details) |
| src/ |
| - Sources packaged with pounder are in here. |
| test_repo/ |
| - This directory is a copy of the default test scheduler. It provides an |
| example of what an test scheduler should look like after unpacking. |
| test_scripts/ |
| - Scripts to run your subtests go here. (see doc/SCHEDULER for details) |
| tests/ |
| - Symlinks to run the tests in a particular order. (see doc/SCHEDULER for |
| details) |
| |
| After running "make install," you will see three additional directories: |
| |
| opt/ |
| - Third party packages (LTP, kernel, etc) go here. |
| tmp/ |
| - Temporary directory to hold files that a test needs. |
| log/ |
| - Logs of output from pounder runs go here. |
| |
| Note that for the provided tests, third party test packages (bonnie, kernel, etc) aren't |
| packaged with pounder. The build scripts should download them to opt/ (stored in |
| $POUNDER_OPTDIR) and build them as necessary. The use of a cache might come in handy here |
| (see doc/CONFIGURATION for details regarding the $POUNDER_CACHE variable). |
| |
| The Install Script |
| ================== |
| The Install script has no options. Run it to build whatever tests have been |
| imported into the pounder package. |
| |
| Configuration |
| ============= |
| See doc/CONFIGURATION documentation file for details. |
| |
| The Pounder Script |
| ================== |
| The pounder script has the following syntax: |
| |
| Usage: ./pounder [-g logdir] [-x] [-d duration] [-n ipaddr] [-m max_failures] [-f] [-h|-u|-r|-k|-l|-e subtests|-i subtests|-c scheduler] [-s] |
| |
| -h Brings up this menu |
| -c scheduler Creates a new test scheduler called scheduler-tests.tar.gz in the pounder/schedulers folder. |
| All subtests to be packaged with this scheduler must first be placed in the pounder/tests folder. |
| -x Enable X stress tests. |
| -d duration Run pounder for duration seconds. |
| -n ipaddr Use ipaddr for NFS tests. |
| -f Remove pounder pid file before running. |
| -u Unmount NFS log storage. |
| -r Remount NFS log storage. |
| -g logdir Use logdir as the log directory. (You probably want -s too.) |
| -s Store logs locally. |
| -l List (both included and excluded) subtests that came with the test scheduler |
| -e subtests Exclude subtests from next pounder run |
| -i subtests Include previously excluded subtests in the next pounder run |
| -k Kill pounder. |
| |
| run "./pounder" to run all subtests |
| run "./pounder subtest" to run just one particular subtest |
| (example: ./pounder tests/T90ramp/D02build_kernel) |
| |
| Credits |
| ======= |
| o Inspired by Sammy Benjamin (sammy@us.ibm.com). None of his code remains |
| in this version of pounder today. |
| o Modifications and additions by members of the LTC xSeries Kernel Team: |
| Darrick Wong (djwong@us.ibm.com) |
| Chris McDermott (lcm@us.ibm.com) |
| Jack Vogel (jfv@us.ibm.com) |
| Keith Mannthey (kmannth@us.ibm.com) |
| James Cleverdon (jamesclv@us.ibm.com) |
| Pat Gaughen (gone@us.ibm.com) |
| John Stultz (jstultz@us.ibm.com) |
| Roger Mach (bigmach@us.ibm.com) |
| Sarunya Jimenez |
| Alexis Bruemmer (alexisb@us.ibm.com) |
| James Takahashi (jmtt@us.ibm.com) |
| Pradeep Kumar (pradeepkumars@in.ibm.com) |
| Bhaskar Rangaswamy (bharanga@in.ibm.com) |
| Manikandan Chidambaram (cmanikandan@in.ibm.com) |
| Lucy Liang (lgliang@us.ibm.com) |
| o Other contributers: |
| |
| Also utilizes: |
| o memxfer5b, from IBM DeveloperWorks |
| o Linux kernel's build system. |
| http://www.kernel.org |
| o bonnie++ |
| o The Linux Test Project |
| o Doug Ledford's (of RH) memtest script |
| o lame, for MMX/SSE/SSE2/3dnow testing |
| o nasm, to build lame |
| o schedutils, to test CPU affinity (with lame) |
| |
| (note that the above packages are not distributed with pounder |
| and are simply installed by the installer script) |