Przejdź do głównej zawartości

Linux RH442 - Znaczenie jednostek pomiarowych, przegląd i konwersja typów.

Ważną częścią w zadaniach optymalizacyjnych jest analiza danych pomiarowych rożnych parametrów takich jak wykorzystanie CPU czy pamięci itd. Dane te przedstawione są w różnych jednostkach, które należy odpowiednio interpretować. Najpopularniejszym systemem miar na świecie jest układ SI - International System of Units. W przypadku środowisk informatycznych mamy do czynienia z systemami binarnymi i decymalnymi , które są do siebie zbliżone ale nie identyczne. Zrozumienie różnych jednostek miar określających parametry zasobów sprzętowych komputerów jest kluczowe do prawidłowego ich określania oraz możliwości podnoszenia wydajności systemu. Rozdział ten obejmuje zagadnienia zbierania, przeglądania i analizy danych dostępnymi narzędziami systemowymi. 


Rodzaje jednostek i ich przedrostki. 

INTERNATIONAL SYSTEM OF UNITS (SI) prefix SI jest decymalny: 

kilo- (k) = 10^3 = 1 000
mega- (M) = 10^6 = 1 000 000
giga- (G) =  10^9 = 1 000 000 000 
tera- (T) = 10^12 = 1 000 000 000 000 
peta- (P) = 10^15 = 1 000 000 000 000 000
exa- (E) = 10^18 = 1 000 000 000 000 000 000 

THE INTERNATIONAL ELECTROTECHNICAL COMMISION (IEC) prefix binarny:

kibi- (Ki) = 2^10 = 1024
mebi- (Mi) = 2^20 = 1048 576
gibi- (Gi) = 2^30 = 1073 741 824
tebi- (Ti) = 2^40 = 1099 511 627 776 
pebi- (Pi) = 2^50 = 1125 889 906 842 624 
exbi- (Ei) = 2^60 = 1152 921 504 606 846 976

Rozpatrując w jaki sposób producenci dysków określają przestrzeń dyskową dla dysku o jakim mówimy, że posiada 5 TB miejsca - oznacza to : 

5 TB to 5 x 10^12 czyli 5 000 000 000 000 bajtów. 

Zauważmy, iż takie rozumienie jest możliwe dopóki terbajt rozumiany jest jako 10^12. Czasami jednak z wielu przyczyn wartości zwracane przez różne narzędzia mogą być przedstawiane w tebibbajtach. W atakiej sytuacji 5 TB to 

5 TB daje 5 x 2^40 czyli = 5497 558 138 880 

Oba powyższe wyniki różnią się około 10%. Tak więc narzędzie wyświetlające rozmiar przestrzeni dyskowej, której rozmiar powinien wynosić 2 TB może pokazać go jako 1,82 TB (mierzone w TiB). 

Powyższy przykład przedstawia jak ważnym elementem jest zrozumienie w jakiej jednostce przedstawione są wyniki pomiarów uzyskiwane z różnych narzędzi. Błędne odczytanie wyniku może przełożyć się w dalszej części na błędną analizę problemu z wydajnością. 

Należy zapamiętać, że jeżeli widzimy prefix binarny nie ma żadnych wątpliwości co do wyniku - od razu wiemy, że dana wartość zgłaszana jest w postaci binarnej. Jeżeli jednak widzisz prefix normalny dzieciętny (decymalny) nie mamy już takiej pewności czy chodzi tu interpretacje binarną czy dziesiętną. 

Częściowo powyższy problem został u standaryzowany by łatwiej zrozumieć jak interpretować dane prefixy. Producenci pamięci RAM podając rozmiar w GB mają na myśli 2^30. W telekomunikacji termin gigabit oznacza zazwyczaj 10^9. Producenci dysków zazwyczaj używają interpretacji dziesiętnej gdzie gigabajt oznacza 10^9 bajtów. 

Konwersje jednostek

Przeprowadzając analizę danych bardzo istotne jest również by potrafić prawidłowo je konwertować. Prostym przykładem konwersji jest odpowiedzenie sobie na pytanie ile sekund znajduje się w godzinie ? 

1 godzina = 60 min / godzinę  x  60 sekund /minutę    =  3600 sekund / godzinę 

Teraz spróbujmy wykonać konwersję 10,000 MiB/h na MiB/s. 

10000 MiB/h   x 1/60 h/min   x 1/60 min/s   =  2,778 MiB/s 

Rozkładając powyższe na czynniki pierwsze mamy : 

10000 MiB/h  x 1/60 h/min  = 166,7  Mib/min

166,7 MiB.min  x 1/60 min/s  = 2,778 Mib/s 

Prościej ujmując działanie polega na : 

10000 / 60 / 60 = 2,778 

Ponieważ w każdej godzinie jest 60 minut , a w każdej minucie 60 sekund tak więc by dojść do wyniku MiB na sekundę podaną ilość MiB trzeba podzielić przez ilość minut w godzinie, a następnie przez ilość sekund w minucie. 

Powyższe działanie nie powinno sprawiać kłopotów ze zrozumieniem , więc spróbujmy coś trudniejszego. W jaki sposób zamienić 50 GiB/h na MiB/s. Po pierwsze musimy zamienić jednostki GiB na MiB, a następnie godziny na sekundy. 

50 GiB/h  x 1024 MiB/GiB  x 1/60 h/m  x  1/60 min/s  =  14,222222... MiB/s 

50x1024 / 60 / 60 = 14,2222 MiB/s 

W środowisku linux możemy z poziomu konsoli wykorzystać do obliczeń kalkulatory bc oraz dc

Przykładowo możemy sobie obliczyć ile danych przepływa na sekundę przez 1Gb kartę sieciową podane w MiB ?

[root@station1 ~]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

scale=8
1*10^9/8/2^20
119.20928955

Wcześniejsze obliczenie przy użyciu kalkulatora bc : 

[root@station1 ~]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=8
50*1024/60/60
14.22222222

Pojęcie "scale" w kalkulatorze bc określa ilość miejsc po przecinku. 

Zadania dla treningu ;) 

Zamień 100 MiB/s na GiB/h ?

Na początek zamieniamy sekundy na godziny : 

100 x 60 (sekund w minucie) x 60 (minut w godzinie) 

100 x 60 x 60 = 360000 MiB/h 

Teraz możemy zamienić MiB na GiB 

360000 x 2^20 (bitów w mebibit) z 1/8 (bajtów w bicie ) x 1/2^30 (gigabitów w bajtach) 

360000 x 1048576 /8/ 107 3741824 = 43,9453125 GiB/h

Przy użyciu kalkulatora bc przebieg obliczenia wygląda następująco : 

[root@station1 ~]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

scale=8

100*60*60*2^20/8/2^30
43.94531250

Podaj w MiB /min wartość 120KiB/sec ? 

173 transakcje na sekundę to ile milionów transakcji na dzień ? 

Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości