MHPCC

SP Parallel Programming Workshop
LoadLeveler


© Copyright Statement

Table of Contents

  1. Prerequisites

  2. What Is LoadLeveler?

  3. LoadLeveler Overview

  4. Basic LoadLeveler Tasks
    1. Building a Job Command File
    2. Submitting a Job
    3. Displaying Job Status
    4. Changing a Job's Priority
    5. Holding a Job
    6. Release a Held Job
    7. Displaying a Machine's Status
    8. Canceling a Job
    9. Displaying the Central Manager

  5. Other LoadLeveler Tasks
    1. Submitting Multiple Jobs
    2. Using the Job Command File as the Executable
    3. Submitting Parallel Jobs - General Notes
    4. Submitting MPI and MPL Parallel Jobs
    5. Submitting PVM Parallel Jobs
    6. Submitting PVMe Parallel Jobs

  6. LoadLeveler Internals

  7. How LoadLeveler Schedules Parallel Jobs

  8. LoadLeveler at the MHPCC

  9. LoadLeveler Job Command File Keywords Reference

  10. LoadLeveler Commands Reference

  11. References, Acknowledgements, WWW Resources

  12. Exercises

Prerequisites


What Is LoadLeveler?


LoadLeveler Overview


Basic LoadLeveler Tasks Building a Job Command File


Basic LoadLeveler Tasks Submitting a Job


Basic LoadLeveler Tasks Displaying Job Status


Id         Owner   Submitted   ST PRI Size Class     Running On
------------ ------- ----------- -- --- ---- --------- -----------
fr3n05.14.0  rjz      7/9  09:13 R  50  0.0  large     fr7n09
fr7n05.15.0  bmr3     7/9  10:34 R  50  0.0  large     fr7n15
fr5n09.13.4  ksmith   7/9  11:05 R  50  0.0  medium    fr3n13
fr5n09.13.3  ksmith   7/9  11:05 R  50  0.0  medium    fr7n03
fr5n09.13.2  ksmith   7/9  11:05 P  50  0.0  medium    
fr5n09.13.0  ksmith   7/9  11:05 I  50  0.0  medium    
fr5n09.13.1  ksmith   7/9  11:05 I  50  0.0  medium   
fr2n09.33.1  sokel    7/9  12:19 I  50  0.0  bigmem    
fr3n11.02.1  salay    7/9  12:23 I  50  0.0  bigmem    
fr3n01.02.1  caldwel  7/8  02:49 H  50  0.0  large

10 jobs in queue 4 waiting, 1 pending, 4 running, 1 held.

Basic LoadLeveler Tasks Changing a Job's Priority


Basic LoadLeveler Tasks Holding a Job


Basic LoadLeveler Tasks Release a Held Job


Basic LoadLeveler Tasks Displaying a Machine's Status


Name             Schedd  InQ Act Startd Run LdAvg Idle Arch   OpSys    
cws1.mhpcc.edu     Down    0   0 Down    0 0.00    22 R6000  AIX41    
fr1n05.mhpcc.edu   Avail   0   0 Busy    1 0.00  9999 R6000  AIX41    
fr1n07.mhpcc.edu   Avail   0   0 Idle    0 0.07  9999 R6000  AIX41    
fr2n01.mhpcc.edu   Avail   0   0 Busy    1 0.00  9999 R6000  AIX41    
fr2n05.mhpcc.edu   Avail   0   0 Busy    1 1.00  9999 R6000  AIX41    
fr9n05.mhpcc.edu   Avail   0   0 Idle    0 0.77  9999 R6000  AIX41    
fr9n05.mhpcc.edu   Avail   0   0 Busy    1 1.01  9999 R6000  AIX41    
     .              .    .   .  .       .  .      .    .      .
     .              .    .   .  .       .  .      .    .      .
fr28n15.mhpcc.edu  Avail   0   0 Busy    1 1.01  9999 R6000  AIX41    
fr28n16.mhpcc.edu  Avail   0   0 Busy    1 1.01  9999 R6000  AIX41    

R6000/AIX41    217 machines  43 jobs   198 running
               217 machines  43 jobs   198 running

The Central Manager is defined on cws1.class.mhpcc.edu

All machines on the machine_list are present

Basic LoadLeveler Tasks Canceling a Job


Basic LoadLeveler Tasks Displaying the Central Manager


Other LoadLeveler Tasks Submitting Multiple Jobs


Other LoadLeveler Tasks Using the Job Command File as the Executable


Other LoadLeveler Tasks Submitting Parallel Jobs - General Notes


Other LoadLeveler Tasks Submitting Parallel MPI and MPL Jobs


Other LoadLeveler Tasks Submitting Parallel PVM Jobs


Other LoadLeveler Tasks Submitting Parallel PVMe Jobs


LoadLeveler Internals


How LoadLeveler Schedules Parallel Jobs


LoadLeveler at the MHPCC

There are a number of important details which you'll need to consider when using LoadLeveler at the MHPCC. These are discussed below.

  1. Users have access to IBM's LoadLeveler manuals by using InfoExplorer.

  2. Modify your path variable: Include the LoadLeveler executables location in your path. For example, if your login shell is the C Shell, add the following line to your .cshrc file and then "source .cshrc" to make it take effect.
    
        set path=($path /usr/lpp/LoadL/nfs/bin)
      

  3. LoadLeveler Classes: Choose the appropriate LoadLeveler class based upon your job requirements. The MHPCC SP2 Configuration Summary Table includes the valid MHPCC LoadLeveler classes. Note that:

  4. The MHPCC utility "llclasses" may be used to display a summary of used and available nodes for all classes.

  5. The "llsubmit" command includes a front end screen which validates command files for a number of possible errors. Job commands file which are rejected will usually be accompanied by an error message stating why they were rejected.

  6. Job Scheduling: The MHPCC has implemented a "fair share" scheduler which constantly monitors relative usage between Department of Defense (DoD) and non-DoD users. The goal is to provide 50% of available cycles to each. As a result of this, some jobs may "jump ahead" of others in the queues.

  7. Backfilling: The MHPCC scheduler is able to take advantage of idle cycles caused by jobs which are "allocating" nodes. Jobs which can run before an "allocating" job obtains all of its nodes will "jump ahead" in the queue. The scheduler uses the cpu_limit keyword to accomplish this. Recommendation: specify the minimum amount of CPU time that your job requires.

  8. cpu_limit: CPU time limits are in effect for each class. The keyword is required for a command script to be accepted by llsubmit at the MHPCC. This works to the user's advantage by allowing for a backfill capability.

  9. max_processors and min_processors: Minimum and Maximum processor limits are in effect for each class. Command scripts that do not specify valid max_processors or min_processors values will be rejected.

  10. Selecting nodes by memory size: Nodes vary in their memory configurations. To select nodes based upon their memory configuration, follow the examples below (see following note about using large memory also):
    
      #@ requirements =  (Memory >= 64)
      #@ requirements =  (Memory >= 128)
      #@ requirements =  (Memory == 256)
      #@ requirements =  (Memory == 1024)
      

  11. Using large memory: AIX compilers have a maximum default of 256 MB for program data and stack size. To obtain more than this, you must do the following:

    1. Compile your program with the -bmaxdata: or -bmaxstack:option. For example, the following compile command will allocate 512 MB data segment:
       xlf -bmaxdata:512000000 -o myprog mprog.f  
      See the xlf man page for details about the -bmaxdata: and -bmaxstack: options.

    2. Make sure that the memory limits set in your shell are not too small. To do this, simply put the unlimit command in your .cshrc shell.

    3. In your LoadLeveler job command file, be sure that you request nodes with adequate memory. For example:
      
        #@ Requirements = (Memory == 1024)        
        

  12. Selecting wide/thin nodes: You can specify that either thin or wide nodes must be used: For example:
    
      #@ Requirements = (Feature == "Wide")  
      #@ Requirements = (Feature == "Thin") 
      

  13. Examples. A few "getting started" examples are available in the LoadLeveler Exercise. Be sure to modify the job command files for your own use before attempting to run them in LoadLeveler. In particular:

  14. Number of jobs queued: Be reasonable about the number of jobs you queue up - no more than 20 please. The MHPCC configuration will permit you to submit as many jobs as you wish, however, no more than two will be permitted to run (system wide) at any time.

  15. Pathnames: When specifying your home directory in a job command file, do not use pathnames that begin with "/a" such as /a/raid2fr2sw/u8/jsmith. Instead, use something like /u/jsmith. Use of the "/a" paths will cause the command file to fail.

  16. If you plan on using LoadLeveler's GUI, xloadl, add the xloadl X resource specifications to your .Xdefaults file. This step is optional, but if you're using xloadl, it makes it look a lot nicer.

    1. Copy the xloadl X resource specification file to your own directory:
      
          cp $WORKSHOP/samples/loadl/Xdefaults.xloadl  .
        

    2. Edit your .Xdefaults file to include the Xdefaults.xloadl file.

    3. Make sure your DISPLAY variable and xhost permissions are set correctly.

    4. Start xloadl with the command "xloadl &"

  • Other helpful hints

    1. For MPL and MPI jobs, you will need to specify both of the following in order to insure running in User Space mode:
      
        #@ requirements   =  (Adapter == "hps_user")
        #@ environment    =  MP_EUILIB=us
        

    2. If you have multiple #@ environment statements, only the last will have effect. If you need to specify multiple environment variables, separate them by semi-colons with a single #@ environment statment. For example:
      
      #@ environment  = MP_EUILIB=us;MP_INFOLEVEL=3;MP_LABELIO=yes
      

    3. Be careful about setting MP_EUILIB in your .cshrc or .profile file. This will override whatever you specify in your LoadLeveler command script. If your communications throughput does not come close to the figures below, it is probably because of this.

    4. Communications throughput - rough estimates. You should expect something close to these for jobs with message sizes greater than 500,000 bytes in length.
      • IP over ethernet = < 1 MB/sec
      • IP over switch = 9-12 MB/sec
      • US over switch = 30-34 MB/sec

    5. LoadLeveler will "source" both your .cshrc and .login files. C Shell users may wish to exclude LoadLeveler from running interactive only commands in these files by doing something like:
      
      if ($?prompt) then
        setenv TERM vt100
        set filec
        set prompt =  "`hostname -s`% "
        setenv MP_EUILIB us
           :
           :
      endif
      
      

    6. Do not use the #@executable statement if you are running parallel jobs. Parallel jobs use the job command file as the executable.

    7. Use your FULL email address if you specify "notify_user" in your command script.

    8. Do not try to use LoadLeveler macros, such as $(job_name), $(cluster) or $(process) as script variables. They will not be recognized by the shell.

    LoadLeveler Job Command File Keywords Reference


    LoadLeveler Commands Reference


    References, Acknowledgements, WWW Resources

    Additional Information on the WWW

    References and Acknowledgements


    © Copyright 1995,1996 Maui High Performance Computing Center. All rights reserved.

    Documents located on the Maui High Performance Computing Center's WWW server are copyrighted by the MHPCC. Educational institutions are encouraged to reproduce and distribute these materials for educational use as long as credit and notification are provided. Please retain this copyright notice and include this statement with any copies that you make. Also, the MHPCC requests that you send notification of their use to help@mail.mhpcc.edu.

    Commercial use of these materials is prohibited without prior written permission.

    Revised: 12 December 1996 blaise@mhpcc.edu