This shows you the differences between two versions of the page.
ep:labs:05:contents:tasks:ex1 [2020/11/10 16:40] ioan_adrian.cosma [01. [20p] Gnuplot graphs] |
ep:labs:05:contents:tasks:ex1 [2025/02/11 23:42] (current) cezar.craciunoiu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Jupyter Notebook ==== | + | ==== 01. [10p] Rotational delay - IOPS calculations ==== |
+ | |||
+ | <note tip> | ||
+ | Every disk in your storage system has a maximum theoretical IOPS value that is based on a formula. Disk performance and IOPS is based on three key factors: | ||
+ | |||
+ | * **Rotational speed**. Measured in RPM, mostly 7,200, 10,000 or 15,000 RPM. A higher rotational speed is associated with a higher-performing disk. | ||
+ | * **Average latency**. The time it takes for the sector of the disk being accessed to rotate into position under a read/write head. | ||
+ | * **Average seek time**. The time (in ms) it takes for the hard drive’s read/write head to position itself over the track being read or written. | ||
+ | * **Average IOPS**: Divide 1 by the sum of the average latency in ms and the average seek time in ms (1 / (average latency in ms + average seek time in ms). | ||
+ | </note> | ||
+ | To calculate the **IOPS range** divide 1 by the sum of the average latency in ms and the average seek time in ms. The formula is: | ||
+ | <code>average IOPS = 1 / (average latency in ms + average seek time in ms). | ||
+ | </code> | ||
+ | |||
+ | Let's calculate the Rotational Delay - RD for a 10K RPM drive: | ||
+ | |||
+ | * Divide 10000 RPM by 60 seconds: **''10000/60 = 166 RPS''** | ||
+ | * Convert 1 of 166 to decimal: **''1/166 = 0.006 seconds per Rotation''** | ||
+ | * Multiply the seconds per rotation by 1000 milliseconds (6 MS per rotation). | ||
+ | * Divide the total in half (RD is considered half a revolution around a disk): **''6/2 = 3 MS''** | ||
+ | * Add an average of 3 MS for seek time: **''3 MS + 3 MS = 6 MS''** | ||
+ | * Add 2 MS for latency (internal transfer): **''6 MS + 2 MS = 8 MS''** | ||
+ | * Divide 1000 MS by 8 MS per I/O: **''1000/8 = 125 IOPS''** | ||
+ | |||
+ | === [10p] Task A - Calculate rotational delay === | ||
+ | |||
+ | Add in your archive the operations and the result you obtained. (Screenshot, picture of calculations made by hand on paper) | ||
+ | |||
+ | Calculate the Rotational Delay, and then the IOPS for a __5400 RPM drive__. | ||
+ | |||
+ | <solution -hidden> | ||
+ | As shown in the //"Calculating IOs Per Second"// section: | ||
+ | <code> | ||
+ | 5400 / 60 = 90 RPS | ||
+ | 1/90 = 0.011 seconds per Rotation | ||
+ | 0.011 * 1000 = 11ms per Rotation | ||
+ | 11 / 2 = 5.5ms RD (Rotational Delay = half a revolution around a disk) | ||
+ | add approx. 3ms seek time => 8.5ms | ||
+ | add 2ms latency => 10.5ms | ||
+ | Divide 1000ms by 10.5ms per I/O => approx. 95 IOPS | ||
+ | </code> | ||
+ | </solution> | ||
- | For this lab, we will use Google Colab for exploring numpy as matplotlib. Please solve your tasks [[https://colab.research.google.com/drive/1k4lwj9GyKLhMhtTt9fK4g1HCvfAtq8jX#scrollTo=2QBi51Q2Yan2&forceEdit=true&sandboxMode=true|here]]. | ||
- | You can then export this python notebook as a PDF (File -> Print) and upload it to Moodle. |