Skip to content

Latest commit

 

History

History
30 lines (26 loc) · 2.15 KB

README.md

File metadata and controls

30 lines (26 loc) · 2.15 KB

golang-job-runner

Trivial job runner (executor), server-client architecture, inspired by Torque, PBSpro, only basic functionality.

Server acts as a passive agent. Clients get new jobs from server and notify server about job ends.

Server:

Client:

  • periodically polls server for new jobs
  • runs up to X jobs simultaneously (configurable)
  • if job exhausted specified time limit, job is killed and server got a "timeout" signal
  • if job is sucessfully finished, then client signals a "success" to the server
  • if job is using less than x % CPU for specified time then process is marked as dead and killed (optional feature)

Current project limitations:

  • no authentication/authorization between servers/clients (only "security" feature is ability to limit running of specified jobs - defining job command line prefix)
  • no HTTPS
  • clients forgot their jobs if restarted (jobs will wait in leased state)
  • only windows clients (task operations uses windows "taskkill" and "tasklist" utilities), similiar functionality now for linux platform using ps and kill tools
  • only job "walltime" is currently monitored and used for limiting job resources, basic support for killing of dead processeses, very basic support for monitoring of cpu and memory utilization
  • no server job queues, jobs are handled in pseudorandom order