Rather than duplicating the entire system, why not just duplicate one module (i.e. the dryer). In fact we can do better. I haven't proved it but I believe if you have modules 1...n which process at a rate r_1, r_2,...r_n, if we add duplicate each module c_i times such that each c_i*r_i is the same, I think we can effectively have no idle time (besides some start-up and finish) as a result of the "slowest link".

grarawr

But if you only duplicated one of the components, you would still have a wait time right? For example, if you duplicate the washer, then after the first load, you start the dryer and the next load in the washer at the same time, but you will have a 15 minute wait time after the second load is done washing cause the dryer takes an hour and the washer takes 45 minutes?

karima

@grarawr yes, the minimum amount of time to finish two loads of laundry in this case is 2 hours and 45 min.

In general, when we want to analyze the performance of systems with multiple components like this (washing and drying for example) we look at the bottleneck. In this case, it's the dryer.
If we had two washing machines and 1 dryer, the throughput of the washing process is 2 loads per 45 min. The throughput of the drying process is 1 load per hour.

So the most loads of completed laundry that we can push through our system at any given point in time is 1 load per hour since we are bottlenecked by the dryer.

In general if we want to measure the amount of time it takes to complete N pieces of work, and the bottleneck of our system is X units of work per unit time, it will be:

time for X amount of work to be completed by the processes before the bottleneck + N/X + time for X amount of work to be completed by the processes after the bottleneck.

This is because, after the first X units of work reach the bottleneck, the bottleneck will never again have to wait on the processes before it to finish their work in order to start working on the next unit of work (the work just piles up in front of it). This is why we have the "time for X amount of work to be completed by the processes before the bottleneck" term in the sum.

Furthermore, by the time the bottleneck has finished processing task i, the processes after it have already finished processing task i-1. In other words, the processes after the bottleneck will always be waiting on the bottleneck to get their next unit of work. This is why we have the "time for X amount of work to be completed by the processes after the bottleneck" term in the sum.

Rather than duplicating the entire system, why not just duplicate one module (i.e. the dryer). In fact we can do better. I haven't proved it but I believe if you have modules 1...n which process at a rate r_1, r_2,...r_n, if we add duplicate each module c_i times such that each c_i*r_i is the same, I think we can effectively have no idle time (besides some start-up and finish) as a result of the "slowest link".

But if you only duplicated one of the components, you would still have a wait time right? For example, if you duplicate the washer, then after the first load, you start the dryer and the next load in the washer at the same time, but you will have a 15 minute wait time after the second load is done washing cause the dryer takes an hour and the washer takes 45 minutes?

@grarawr yes, the minimum amount of time to finish two loads of laundry in this case is 2 hours and 45 min.

In general, when we want to analyze the performance of systems with multiple components like this (washing and drying for example) we look at the bottleneck. In this case, it's the dryer. If we had two washing machines and 1 dryer, the throughput of the washing process is 2 loads per 45 min. The throughput of the drying process is 1 load per hour.

So the most loads of completed laundry that we can push through our system at any given point in time is 1 load per hour since we are bottlenecked by the dryer.

In general if we want to measure the amount of time it takes to complete N pieces of work, and the bottleneck of our system is X units of work per unit time, it will be:

time for X amount of work to be completed by the processes before the bottleneck + N/X + time for X amount of work to be completed by the processes after the bottleneck.

This is because, after the first X units of work reach the bottleneck, the bottleneck will never again have to wait on the processes before it to finish their work in order to start working on the next unit of work (the work just piles up in front of it). This is why we have the "time for X amount of work to be completed by the processes before the bottleneck" term in the sum.

Furthermore, by the time the bottleneck has finished processing task i, the processes after it have already finished processing task i-1. In other words, the processes after the bottleneck will always be waiting on the bottleneck to get their next unit of work. This is why we have the "time for X amount of work to be completed by the processes after the bottleneck" term in the sum.