Home

Team Teaching - Fault Tolerance & Parallel and Distributed Computing

Fault Tolerance

Fault Tolerance: The ability of a system to continue to operate properly and without interruption if one or more of its components were to fail.

There are a few factors you need to confirm to decide if a system is fault tolerant or not. Think of each device/point as a pool, and the lines as pipes.

If to answer to all of these are “Yes,” then the system is Fault Tolerant.

Redundancy: Fault Tolerant networks typically have extra components and pathways to ensure reliability, making them have redundancy.

“Essential Knowledges” from College Board

Examples:

image-2.png

image.png

image-3.png

Popcorn Hack #1 (True or False)

image.png

Answer here: False because even though there is a path between A and G, the connection to A gets severed.

What are the benefits of having a Fault Tolerant Network?

ferferf

Popcorn Hack #2 (Multiple Choice)

image.png

Is this network above Fault Tolerant? If not, what changes can you make that can make this a fault tolerant network?

- A: connection from *A ---> B*
- B: connection from *B ---> D*
- C: connection from *E ---> F*
- D: connection from *B ---> C*

Answer here: A because when breaking A to F, A is completely isolated and cannot reach B.

Parallel and Distributed Computing

Computer Tasks: All of the tasks that are operated on the computer has to be handled by the computer. These tasks are scheduled by the operating system.

Because computers have many tasks to manage, they need to balance the tasks so all CPUs are being utilized evenly and fully.

Sequential Computing: Tasks are done one after the other; operations are performed one at a time.

Parallel Computing: tasks are done simultaneously.

image.png

Speedup Time: The speedup of a parallel solution is measured in the time it takes to complete the task sequentially divided by the time it takes to complete the task in parallel. Example Sequential time is 120 ms, parallel time is 60 ms, speedup time is 2 ms

Distributed Computing: sending of tasks from one computer to another; multiple devices are used to run a program. Requires a network.

image.png

For example, when you search something up on google, Google sends the request to thousands of servers in the backround for your answers.

Web Services: Standards on how computers can ask for tast execution over the web, including protocols

Beowolf Clusters: special software grouping different computers together

Essential Knowledges from College Board:

Popcorn Hack #3

Explain the difference between Sequential, Parallel, and Distributive computing in 1-2 sentences. Try to not look at answers above, and put it in your own words.

Sequential computing is like when a computer does operations one after another. Parallel computing completes tasks simultaneously, using multiple processors or cores to. make it faster. Distributed computing uses multiple devices, which are connected and share resources to spolve problems that take longer.

HOMEWORK

Fault Tolerance:

Make two data flowcharts like the examples above, you can use MS paint, canva, any design website. Make one Fault Tolerant and one not fault tolerant, and explain what needs to be changed to the flowchart in order to make the network fault tolerant. Doing these will get you over a .90:

Non fault tolerant

New-Flowchart

Fault tolerant

New-Flowchart-1

Parallel and Distributed Computing:

# Sequential
import time

start = time.time()

for i in range(10):
  print(i)

end = time.time()
print("timer thing:", end - start)

0
1
2
3
4
5
6
7
8
9
Sequential time: 5.4836273193359375e-05
# Parallelism
import time
import multiprocessing

start = time.time()

def print_num(num):
  print(num)

if __name__ == '__main__':
  pool = multiprocessing.Pool(processes=10)
  pool.map(print_num, range(10))
  pool.close()
  pool.join()

end = time.time()
print("time thing again:", end - start)

© 2024    •  Powered by Soopr   •  Theme  Moonwalk