XDMoD (XD Metrics on Demand) is an NSF-funded open source tool designed to audit and facilitate the utilization of the XSEDE cyberinfrastructure by providing a wide range of metrics on XSEDE resources, including resource utilization, resource performance, and impact on scholarship and research. The XDMoD framework is designed to meet the following objectives:
- Provide the user community with a tool to manage their allocations and optimize their resource utilization,
- Provide operational staff with the ability to monitor and tune resource performance,
- Provide management with a tool to monitor utilization, user base, and performance of resources, and
- Provide metrics to help measure scientific impact.
While initially focused on the XSEDE program, Open XDMoD has been created to be adaptable to any HPC environment.
For more information, including information about additional Open XDMoD capabilities provided as optional modules, please visit the Open XDMoD website.
Prebuilt packages of Open XDMoD are available as releases on GitHub. Packages for Open XDMoD modules are available as releases in their respective repositories.
See the installation instructions on the Open XDMoD website for additional information.
Feedback is always welcome, and contributions are greatly appreciated! Before getting started, please see our contributing guidelines.
Development on Open XDMoD and its modules can be started using either Repo or Git. If you are unsure which to start with, try Repo, as it is easy to transition from a Repo workflow to a pure Git workflow. If you don't want to install yet another tool, using Git will work just fine.
To assist with initial setup and development across Open XDMoD and its modules, we support the use of Repo, a tool built by the Android development team to help manage multi-repository projects. We supply a Repo manifest repository that can be used to get started with Open XDMoD and first-party modules.
The steps below will get you started, but further documentation on using Repo can be found here. At any point, standard Git commands may be used in individual project directories, as the directories are simply standard Git repositories.
To clone Open XDMoD and first-party modules, run the following commands,
substituting in the branch for the version you wish you base your work on
(e.g. xdmod6.5
):
repo init -u git@github.com:ubccr/xdmod-repo-manifest -b [branch]
repo sync
Note that unlike git clone
, Repo does not automatically create a local branch
tracking the initial branch that was checked out (although you can create these
branches manually, if you wish, by running repo forall -c 'git checkout [branch]'
).
To add forks of the various projects to all repositories at once, run this command, substituting in your GitHub username:
repo forall -c 'git remote add origin git@github.com:[username]/$REPO_PROJECT'
To start a branch on one or more projects, use this command:
repo start [branch] [projects...]
To get started on core Open XDMoD development, simply clone the Open XDMoD repository.
To work on an Open XDMoD module, one option is to clone the module repository
directly inside of your Open XDMoD repository's open_xdmod/modules
directory.
If your module repository is named with the xdmod-
prefix, remove it from the
clone's directory name. Alternatively, you may clone the module repository
elsewhere and create a symbolic link to it from open_xdmod/modules
.
For example, to work on your fork of the SUPReMM module using a direct clone, run this command, substituting in your GitHub username and Open XDMoD repo location:
git clone git@github.com:[username]/xdmod-supremm [xdmod_repo]/open_xdmod/modules/supremm
To work on your fork of the SUPReMM module using an external clone and a symbolic link, run these commands, substituting in your GitHub username and the relevant paths:
git clone git@github.com:[username]/xdmod-supremm [supremm_repo]
ln -s [supremm_repo] [xdmod_repo]/open_xdmod/modules/supremm
- PHP
- Composer
- PEAR
- PEAR Log Module
- Java Development Kit 7+
- rpmbuild
- This is only required if building RPMs.
NOTE: Modules for Open XDMoD may have their own build dependencies.
The examples in the steps below apply to Open XDMoD, but similar procedures
may be followed to build modules for Open XDMoD as well. Simply ensure that
the modules (or symbolic links to the modules) are present in
open_xdmod/modules
and do not have the xdmod-
prefix. For example, to build
the SUPReMM module (which is stored in the repository xdmod-supremm
),
clone it or create a symbolic link to it at open_xdmod/modules/supremm
.
- Change directory to the root of the Open XDMoD repository.
- Install Composer dependencies for Open XDMoD.
-
composer install
- Run the package builder script.
-
open_xdmod/build_scripts/build_package.php --module xdmod
- To build Open XDMoD modules, substitutexdmod
with the name of a module's directory withinopen_xdmod/modules
.
The resulting tarball will be located in open_xdmod/build
.
This procedure assumes your rpmbuild
directory is ~/rpmbuild
. If it is not,
substitute accordingly.
- Change directory to the root of the Open XDMoD repository.
- If you have not already, create a source tarball using the steps in the Source section.
- Copy the source tarball to the
SOURCES
directory in yourrpmbuild
directory. -cp open_xdmod/build/xdmod-x.y.z.tar.gz ~/rpmbuild/SOURCES
- Extract the
.spec
file from the source tarball into theSPECS
directory in yourrpmbuild
directory. -tar -xOf ~/rpmbuild/SOURCES/xdmod-x.y.z.tar.gz xdmod-x.y.z/xdmod.spec >~/rpmbuild/SPECS/xdmod.spec
- Run
rpmbuild
. -rpmbuild -bb ~/rpmbuild/SPECS/xdmod.spec
The resulting RPM will be located in ~/rpmbuild/RPMS/noarch
.
Open XDMoD is released under the GNU Lesser General Public License ("LGPL") Version 3.0. See the LICENSE file for details.
Open XDMoD includes several libraries that are licensed separately. See the license page on the Open XDMoD website for details.
Some software products used by Open XDMoD are not free for commercial use. See the license page on the Open XDMoD website for details.