Adding schedulers and job dispatchers
A scheduler is a system that selects a job for running, where a job can be understood as a program or part of code that requires running. A dispatcher, on the other hand, is the system that takes the job and places it in the execution queue of a machine. They are complementary, and in some cases, they are treated as the same system. So, for the purpose of this section, we are going to talk about some systems that can do both scheduling and dispatching jobs.
The main objective of using systems that can schedule and dispatch jobs is to gain scale by adding machines that can run more jobs in parallel. It is kind of similar to a single program using multiprocessing but with the difference that the new processes are being executed on another machine.
You could do lots of work to improve the performance of your program, but in the end, you will be bound by the machine’s limitations, and if your application is CPU bound, it will be limited...