Flux: Practical Job Scheduling

Similar documents
High Scalability Resource Management with SLURM Supercomputing 2008 November 2008

Resource Management at LLNL SLURM Version 1.2

NIF ICCS Test Controller for Automated & Manual Testing

Testing PL/SQL with Ounit UCRL-PRES

METADATA REGISTRY, ISO/IEC 11179

Testing of PVODE, a Parallel ODE Solver

ENDF/B-VII.1 versus ENDFB/-VII.0: What s Different?

Slurm Overview. Brian Christiansen, Marshall Garey, Isaac Hartung SchedMD SC17. Copyright 2017 SchedMD LLC

Information to Insight

Portable Data Acquisition System

Advanced Synchrophasor Protocol DE-OE-859. Project Overview. Russell Robertson March 22, 2017

Introduction to Slurm

In-Field Programming of Smart Meter and Meter Firmware Upgrade

Alignment and Micro-Inspection System

Integrated Volt VAR Control Centralized

Site Impact Policies for Website Use

Go SOLAR Online Permitting System A Guide for Applicants November 2012

Adding a System Call to Plan 9

Real Time Price HAN Device Provisioning

HPC Colony: Linux at Large Node Counts

Data Management Technology Survey and Recommendation

SmartSacramento Distribution Automation

Batch Systems & Parallel Application Launchers Running your jobs on an HPC machine

Heterogeneous Job Support

Power Constrained HPC

FY97 ICCS Prototype Specification

Java Based Open Architecture Controller

On Demand Meter Reading from CIS

COMPUTATIONAL FLUID DYNAMICS (CFD) ANALYSIS AND DEVELOPMENT OF HALON- REPLACEMENT FIRE EXTINGUISHING SYSTEMS (PHASE II)

DOE EM Web Refresh Project and LLNL Building 280

PJM Interconnection Smart Grid Investment Grant Update

Entergy Phasor Project Phasor Gateway Implementation

Electronic Weight-and-Dimensional-Data Entry in a Computer Database

Development of Web Applications for Savannah River Site

LosAlamos National Laboratory LosAlamos New Mexico HEXAHEDRON, WEDGE, TETRAHEDRON, AND PYRAMID DIFFUSION OPERATOR DISCRETIZATION

Exascale Process Management Interface

Washington DC October Consumer Engagement. October 4, Gail Allen, Sr. Manager, Customer Solutions

Big Data Computing for GIS Data Discovery

Optimizing Bandwidth Utilization in Packet Based Telemetry Systems. Jeffrey R Kalibjian

Bridging The Gap Between Industry And Academia

Stereo Vision Based Automated Grasp Planning

GA A26400 CUSTOMIZABLE SCIENTIFIC WEB-PORTAL FOR DIII-D NUCLEAR FUSION EXPERIMENT

NATIONAL GEOSCIENCE DATA REPOSITORY SYSTEM

GA A22637 REAL TIME EQUILIBRIUM RECONSTRUCTION FOR CONTROL OF THE DISCHARGE IN THE DIII D TOKAMAK

OPTIMIZING CHEMICAL SENSOR ARRAY SIZES

CHANGING THE WAY WE LOOK AT NUCLEAR

Introduction to the NCAR HPC Systems. 25 May 2018 Consulting Services Group Brian Vanderwende

ECE 574 Cluster Computing Lecture 4

Contributors: Surabhi Jain, Gengbin Zheng, Maria Garzaran, Jim Cownie, Taru Doodi, and Terry L. Wilmarth

and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof.

Graham vs legacy systems

TUCKER WIRELINE OPEN HOLE WIRELINE LOGGING

StorageGRID Webscale NAS Bridge Management API Guide

5A&-qg-oOL6c AN INTERNET ENABLED IMPACT LIMITER MATERIAL DATABASE

Slurm basics. Summer Kickstart June slide 1 of 49

Batch Usage on JURECA Introduction to Slurm. May 2016 Chrysovalantis Paschoulas HPS JSC

PJM Interconnection Smart Grid Investment Grant Update

Executing dynamic heterogeneous workloads on Blue Waters with RADICAL-Pilot

Scheduling By Trackable Resources

The ANLABM SP Scheduling System

Installation Guide for sundials v2.6.2

Southern Company Smart Grid

1 Bull, 2011 Bull Extreme Computing

ACCELERATOR OPERATION MANAGEMENT USING OBJECTS*

Protecting Control Systems from Cyber Attack: A Primer on How to Safeguard Your Utility May 15, 2012

Large Scale Test Simulations using the Virtual Environment for Test Optimization

Using Compute Canada. Masao Fujinaga Information Services and Technology University of Alberta

Common Persistent Memory POSIX* Runtime (CPPR) API Reference (MS21) API Reference High Performance Data Division

Slurm Birds of a Feather

@ST1. JUt EVALUATION OF A PROTOTYPE INFRASOUND SYSTEM ABSTRACT. Tom Sandoval (Contractor) Los Alamos National Laboratory Contract # W7405-ENG-36

Mapping MPI+X Applications to Multi-GPU Architectures

KCP&L SmartGrid Demonstration

MULTIPLE HIGH VOLTAGE MODULATORS OPERATING INDEPENDENTLY FROM A SINGLE COMMON 100 kv dc POWER SUPPLY

Got Burst Buffer. Now What? Early experiences, exciting future possibilities, and what we need from the system to make it work

Intelligent Grid and Lessons Learned. April 26, 2011 SWEDE Conference

BlackBerry Java Development Environment (JDE)

zorder-lib: Library API for Z-Order Memory Layout

cli_filter command line filtration, manipulation, and introspection of job submissions

Tim Draelos, Mark Harris, Pres Herrington, and Dick Kromer Monitoring Technologies Department Sandia National Laboratories

Batch Systems. Running your jobs on an HPC machine

Directions in Workload Management

DERIVATIVE-FREE OPTIMIZATION ENHANCED-SURROGATE MODEL DEVELOPMENT FOR OPTIMIZATION. Alison Cozad, Nick Sahinidis, David Miller

Introduction to the Cluster

Introduction to High-Performance Computing (HPC)

Use of the target diagnostic control system in the National Ignition Facility

Cluster Computing. Resource and Job Management for HPC 16/08/2010 SC-CAMP. ( SC-CAMP) Cluster Computing 16/08/ / 50

REAL-TIME MULTIPLE NETWORKED VIEWER CAPABILITY OF THE DIII D EC DATA ACQUISITION SYSTEM

High Performance Computing Cluster Advanced course

Cross-Track Coherent Stereo Collections

FSEC Procedure for Testing Stand-Alone Photovoltaic Systems

Centrally Managed. Ding Jun JLAB-ACC This process of name resolution and control point location

v /4 Quick Short Test Report Technical Publication Transfer Test Hughes Tucson Support Systems Operation MIL-D-28001A (SGML) CTN Test Report AFTB-ID

Felix Xavier CloudByte Inc.

Parallel Merge Sort Using MPI

TOSS - A RHEL-based Operating System for HPC Clusters

Felix Xavier CloudByte Inc.

Introduction to RCC. September 14, 2016 Research Computing Center

Saiidia National Laboratories. work completed under DOE ST485D sponsored by DOE

Introduction to High-Performance Computing (HPC)

How to access Geyser and Caldera from Cheyenne. 19 December 2017 Consulting Services Group Brian Vanderwende

Transcription:

Flux: Practical Job Scheduling August 15, 2018 Dong H. Ahn, Ned Bass, Al hu, Jim Garlick, Mark Grondona, Stephen Herbein, Tapasya Patki, Tom Scogland, Becky Springmeyer This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under contract DE- A52-07NA27344. Lawrence Livermore National Security, LL

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them 2

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them 3

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them 3

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them flickr: dannychamoro 3

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them 4

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them 4

What is Flux? New Resource and Job Management Software (RJMS) developed here at LLNL A way to manage remote resources and execute tasks on them 4

What about? 5

What about? losed-source 6

What about? Not designed for HP 7

What about? Limited Scalability, Usability, and Portability 8

Why Flux? 9

Why Flux? Extensibility Open source Modular design with support for user plugins 9

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs 9

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs Usability, Lua, and Python bindings that expose 100% of Flux s functionality an be used as a single-user tool or a system scheduler 9

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs Usability, Lua, and Python bindings that expose 100% of Flux s functionality an be used as a single-user tool or a system scheduler Portability Optimized for HP and runs in loud and Grid settings too Runs on any set of Linux machines: only requires a list of IP addresses or PMI 9

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs Usability, Lua, and Python bindings that expose 100% of Flux s functionality an be used as a single-user tool or a system scheduler Portability Optimized for HP and runs in loud and Grid settings too Runs on any set of Linux machines: only requires a list of IP addresses or PMI Flux is designed to make hard scheduling problems easy 9

Portability: Running Flux 10

Portability: Running Flux Already installed on L systems (including Sierra) spack install flux-sched for everywhere else 10

Portability: Running Flux Already installed on L systems (including Sierra) spack install flux-sched for everywhere else Flux can run anywhere that MPI can run, (via PMI Process Management Interface) Inside a resource allocation from: itself (hierarchical Flux), Slurm, Moab, PBS, LSF, etc flux start OR srun flux start 10

Portability: Running Flux Already installed on L systems (including Sierra) spack install flux-sched for everywhere else Flux can run anywhere that MPI can run, (via PMI Process Management Interface) Inside a resource allocation from: itself (hierarchical Flux), Slurm, Moab, PBS, LSF, etc flux start OR srun flux start Flux can run anywhere that supports TP and you have the IP addresses flux broker -Sboot.method=config -Sboot.config_file=boot.conf boot.conf: session-id = "mycluster" tbon-endpoints = [ "tcp://192.168.1.1:8020", "tcp://192.168.1.2:8020", "tcp://192.168.1.3:8020"] 10

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs Usability, Lua, and Python bindings that expose 100% of Flux s functionality an be used as a single-user tool or a system scheduler Portability Optimized for HP and runs in loud and Grid settings too Runs on any set of Linux machines: only requires a list of IP addresses or PMI 11

Usability: Submitting a Batch Job 12

Usability: Submitting a Batch Job Slurm sbatch N2 n4 t 2:00 sleep 120 12

Usability: Submitting a Batch Job Slurm sbatch N2 n4 t 2:00 sleep 120 Flux LI flux submit N2 n4 t 2m sleep 120 12

Usability: Submitting a Batch Job Slurm sbatch N2 n4 t 2:00 sleep 120 Flux LI flux submit N2 n4 t 2m sleep 120 Flux API: import json, flux jobreq = { 'nnodes' : 2, 'ntasks' : 4, 'walltime' : 120, 'cmdline' : ["sleep", "120"]} f = flux.flux () resp = f.rpc_send ("job.submit", json.dumps(jobreq)) 12

Usability: Running an Interactive Job 13

Usability: Running an Interactive Job Slurm srun N2 n4 t 2:00 sleep 120 13

Usability: Running an Interactive Job Slurm srun N2 n4 t 2:00 sleep 120 Flux LI flux wreckrun N2 n4 t 2m sleep 120 13

Usability: Running an Interactive Job Slurm srun N2 n4 t 2:00 sleep 120 Flux LI flux wreckrun N2 n4 t 2m sleep 120 Flux API: import sys from flux import kz resp = f.rpc_send ("job.submit", json.dumps(jobreq)) kvs_dir = resp['kvs_dir'] for task_id in range(jobreq['ntasks']): kz.attach (f, "{}.{}.stdout".format(kvs_dir, task_id), sys.stdout) f.reactor_run (f.get_reactor (), 0) 13

Usability: Tracking Job Status 14

Usability: Tracking Job Status LI: slow, non-programmatic, inconvenient to parse watch squeue j JOBID watch flux wreck ls JOBID 14

Usability: Tracking Job Status LI: slow, non-programmatic, inconvenient to parse watch squeue j JOBID watch flux wreck ls JOBID Tracking via the filesystem date > $JOBID.start; srun myapp; date > $JOBID.stop 14

Usability: Tracking Job Status LI: slow, non-programmatic, inconvenient to parse watch squeue j JOBID watch flux wreck ls JOBID Tracking via the filesystem date > $JOBID.start; srun myapp; date > $JOBID.stop quota -vf ~/quota.conf Disk quotas for herbein1: Filesystem used quota limit files /p/lscratchrza 760.3G n/a n/a 8.6M 14

Usability: Tracking Job Status LI: slow, non-programmatic, inconvenient to parse watch squeue j JOBID watch flux wreck ls JOBID Tracking via the filesystem date > $JOBID.start; srun myapp; date > $JOBID.stop quota -vf ~/quota.conf Disk quotas for herbein1: Filesystem used quota limit files /p/lscratchrza 760.3G n/a n/a 8.6M I/O I/O Non-I/O Runtime Stages UQP Startup Job Submission File reation File Access 14

Usability: Tracking Job Status LI: slow, non-programmatic, inconvenient to parse watch squeue j JOBID watch flux wreck ls JOBID Tracking via the filesystem date > $JOBID.start; srun myapp; date > $JOBID.stop Push notification via Flux s Job Status and ontrol (JS): def jsc_cb (jcbstr, arg, errnum): jcb = json.loads (jcbstr) jobid = jcb['jobid'] state = jsc.job_num2state (jcb[jsc.js_state_pair][jsc.js_state_pair_nstate]) print "flux.jsc: job", jobid, "changed its state to ", state jsc.notify_status (f, jsc_cb, None) 14

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs Usability, Lua, and Python bindings that expose 100% of Flux s functionality an be used as a single-user tool or a system scheduler Portability Optimized for HP and runs in loud and Grid settings too Runs on any set of Linux machines: only requires a list of IP addresses or PMI 15

Scalability: Running Many Jobs 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores Flux API: for f in os.listdir(. ): payload[ command ] = [ tar, -cf, {}.tgz.format(f), f] resp = f.rpc_send ("job.submit", payload) 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores Flux API: for f in os.listdir(. ): payload[ command ] = [ tar, -cf, {}.tgz.format(f), f] resp = f.rpc_send ("job.submit", payload) 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores Flux API: for f in os.listdir(. ): payload[ command ] = [ tar, -cf, {}.tgz.format(f), f] resp = f.rpc_send ("job.submit", payload) Subject: Good Neighbor Policy You currently have 271 jobs in the batch system on lamoab. The good neighbor policy is that users keep their maximum submitted job count at a maximum of 200 or less. Please try to restrict yourself to this limit in the future. Thank you. 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores Flux API: for f in os.listdir(. ): payload[ command ] = [ tar, -cf, {}.tgz.format(f), f] resp = f.rpc_send ("job.submit", payload) Variable Input Job Stream apacitor onstant Output Job Stream Scheduler 16

Scalability: Running Many Jobs Slurm find./ -exec sbatch N1 tar cf {}.tgz {}\; Slow: requires acquiring a lock in Slurm, can timeout causing failures Inefficient: uses 1 node for each task find./ -exec srun n1 tar cf {}.tgz {}\; Slow: spawns a process for every submission Inefficient: is not a true scheduler can overlap tasks on cores Flux API: for f in os.listdir(. ): payload[ command ] = [ tar, -cf, {}.tgz.format(f), f] resp = f.rpc_send ("job.submit", payload) Flux apacitor find./ -printf -n1 tar cf %p.tgz %p flux-capacitor flux-capacitor --command_file my_command_file -n1 tar -cf dira.tgz./dira -n1 tar -cf dirb.tgz./dirb -n1 tar -cf dir.tgz./dir 16

Scalability: Running Many Heterogeneous Jobs 17

Scalability: Running Many Heterogeneous Jobs Slurm No support for heterogeneous job steps in versions before 17.11 Limited support in versions after 17.11 17

Scalability: Running Many Heterogeneous Jobs Slurm No support for heterogeneous job steps in versions before 17.11 Limited support in versions after 17.11 https://slurm.schedmd.com/ heterogeneous_jobs.html#limitations 17

Scalability: Running Many Heterogeneous Jobs Slurm No support for heterogeneous job steps in versions before 17.11 Limited support in versions after 17.11 Flux apacitor flux-capacitor --command_file my_command_file -n1 tar -cf dira.tgz./dira -n32 make j 32 -N4 my_mpi_app... 17

Scalability: Running Millions of Jobs 18

18 Flux apacitor (Depth-1) flux-capacitor --command_file my_command_file Scalability: Running Millions of Jobs luster Node Node Node Node Flux Instance apacitor

Scalability: Running Millions of Jobs Flux apacitor (Depth-1) flux-capacitor --command_file my_command_file Hierarchical Flux apacitor (Depth-2) for x in./*.commands; do flux submit -N1 flux start \ flux-capacitor --command_file $x done luster Flux Instance Node Node Node Node Flux Instance Flux Instance Flux Instance Flux Instance apacitor apacitor apacitor apacitor 18

Scalability: Running Millions of Jobs Flux apacitor (Depth-1) flux-capacitor --command_file my_command_file Hierarchical Flux apacitor (Depth-2) for x in./*.commands; do flux submit -N1 flux start \ flux-capacitor --command_file $x done Flux Hierarchy (Depth-3+) flux-hierarchy --config=config.json --command_file my_command_file apacitor luster Flux Instance Node Node Node Node Flux Instance Flux Instance Flux Instance Flux Instance 18

Scalability: Running Millions of Jobs Flux apacitor (Depth-1) flux-capacitor --command_file my_command_file Hierarchical Flux apacitor (Depth-2) for x in./*.commands; do flux submit -N1 flux start \ flux-capacitor --command_file $x done Flux Hierarchy (Depth-3+) flux-hierarchy --config=config.json --command_file my_command_file 18

Why Flux? Extensibility Open source Modular design with support for user plugins Scalability Designed from the ground up for exascale and beyond Already tested at 1000s of nodes & millions of jobs Usability, Lua, and Python bindings that expose 100% of Flux s functionality an be used as a single-user tool or a system scheduler Portability Optimized for HP and runs in loud and Grid settings too Runs on any set of Linux machines: only requires a list of IP addresses or PMI 19

Extensibility: Modular Design 20

Extensibility: Modular Design At the core of Flux is an overlay network Built on top of ZeroMQ Supports RPs, Pub/Sub, Push/Pull, etc Flux Instance Overlay Networks & Routing Msg Idioms (RP/Pub-Sub) omms Message Broker 20

Extensibility: Modular Design At the core of Flux is an overlay network Built on top of ZeroMQ Supports RPs, Pub/Sub, Push/Pull, etc Modules provide extended functionality (i.e., services) User-built modules are loadable too Some modules also support plugins Service Modules Heartbeat Key-Value Store Resource Remote Execution Sched Framework Flux Instance Overlay Networks & Routing Msg Idioms (RP/Pub-Sub) omms Message Broker Policy Plugin A 20

Extensibility: Modular Design At the core of Flux is an overlay network Built on top of ZeroMQ Supports RPs, Pub/Sub, Push/Pull, etc Modules provide extended functionality (i.e., services) User-built modules are loadable too Some modules also support plugins External tools and commands can access services User authentication and roles supported Service Modules Heartbeat Key-Value Store Resource Remote Execution Sched Framework Policy Plugin A Flux Instance Overlay Networks & Routing Msg Idioms (RP/Pub-Sub) omms Message Broker ommands flux submit flux-capacitor 20

Extensibility: reating Your Own Module 21

Extensibility: reating Your Own Module Register a new service pymod.new_job that ingests jobs and responds with a Job ID 21

Extensibility: reating Your Own Module Register a new service pymod.new_job that ingests jobs and responds with a Job ID import itertools, json, flux def handle_new_job(f, typemask, message, arg): job_queue, job_ids = arg job_queue.append(message.payload) response = { jobid : job_ids.next()} f.respond(message, 0, json.dumps(response)) def mod_main(f, *argv): f.msg_watcher_create(flux.flux_msgtype_request, handle_new_job,"pymod.new_job", args=([], itertools.count(0))).start() f.reactor_run(f.get_reactor(), 0) 21

Extensibility: reating Your Own Module Register a new service pymod.new_job that ingests jobs and responds with a Job ID import itertools, json, flux def handle_new_job(f, typemask, message, arg): job_queue, job_ids = arg job_queue.append(message.payload) response = { jobid : job_ids.next()} f.respond(message, 0, json.dumps(response)) def mod_main(f, *argv): f.msg_watcher_create(flux.flux_msgtype_request, handle_new_job,"pymod.new_job", args=([], itertools.count(0))).start() f.reactor_run(f.get_reactor(), 0) Load using flux module load pymod --module=path/to/file.py 21

Extensibility: Flux s ommunication Overlay 22

Extensibility: Flux s ommunication Overlay onnect to a running flux instance f = flux.flux() 22

Extensibility: Flux s ommunication Overlay onnect to a running flux instance f = flux.flux() Send an RP to a service and receive a response resp = f.rpc_send ( pymod.new_job", payload) jobid = json.loads(resp)[ jobid ] 22

Extensibility: Flux s ommunication Overlay onnect to a running flux instance f = flux.flux() Send an RP to a service and receive a response resp = f.rpc_send ( pymod.new_job", payload) jobid = json.loads(resp)[ jobid ] Subscribe to and publish an event f.event_subscribe( node_down ) f.msg_watcher_create(node_down_cb, raw.flux_msgtype_event, node_down ).start() f.event_send( node_down ) 22

Extensibility: Scheduler Plugins 23

Extensibility: Scheduler Plugins ommon, built-in scheduler plugins: First-come First-Served (FFS) Backfilling onservative EASY Hybrid 23

Extensibility: Scheduler Plugins ommon, built-in scheduler plugins: First-come First-Served (FFS) Backfilling onservative EASY Hybrid Various, advanced scheduler plugins: I/O-aware PU performance variability aware Network-aware 23

Extensibility: Scheduler Plugins ommon, built-in scheduler plugins: First-come First-Served (FFS) Backfilling onservative EASY Hybrid Various, advanced scheduler plugins: I/O-aware PU performance variability aware Network-aware reate your own! 23

Extensibility: Scheduler Plugins ommon, built-in scheduler plugins: First-come First-Served (FFS) Backfilling onservative EASY Hybrid Various, advanced scheduler plugins: I/O-aware PU performance variability aware Network-aware reate your own! Loading the plugins flux module load sched.io-aware FLUX_SHED_OPTS="plugin=sched.fcfs" flux start 23

Extensibility: Open Source Flux-Framework code is available on GitHub Most project discussions happen in GitHub issues PRs and collaboration welcome! 24

Extensibility: Open Source Flux-Framework code is available on GitHub Most project discussions happen in GitHub issues PRs and collaboration welcome! Thank You! 24

Disclaimer This document was prepared as an account of work sponsored by an agency of the United States government. Neither the United States government nor Lawrence Livermore National Security, LL, nor any of their employees makes any warranty, expressed or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights. Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States government or Lawrence Livermore National Security, LL. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States government or Lawrence Livermore National Security, LL, and shall not be used for advertising or product endorsement purposes.