SSD vs HDD ile energii zużywa dysk

Kolejny raz zainspirowałam mnie elektroda.pl. Tym razem ciekawy okazał się wątek: HDD vs SSD - zmierzyliśmy pobór prądu. Postanowiłem też przeprowadzić testy przy użyciu posiadanych dysków i mierników. Co miałem w weekend pod ręką, to wykorzystałem. Dlatego też sukcesywnie będę testować kolejne dyski i aktualizować ten wpis.

Zastanawiałem się, jak przeprowadzić testy? Jaka metoda da mi użyteczne informacje, których oczekuję? Jak porównać zużycie energii przez dyski: SSD vs HDD..?
Metoda twórców testów z elektrody wydaje się najbardziej naturalna i zapewne sam od takiej bym rozpoczął. Dublowanie pomiarów nie ma sensu, wymyśliłem więc inne podejście do testów.

Zrezygnowałem ze stricte syntetycznych testów. Postanowiłem sprawdzić dyski zapisując i odczytując rzeczywiste dane. Chciałem zapewnić warunki zbliżone do realnych warunków działania dysków. Oczywiście, nie jest to dokładnie naśladowanie rzeczywistej pracy dysku, ale zapewniłem powtarzalność testów.

Na dyskach założyłem partycje 50GB, podłączyłem do komputera z system FreeBSD za pomocą karty PCI z interface SATA i utworzyłem system plików UFS2.
Do testów użyłem skryptów, które miały zapewnić powtarzalność - nie bezwzględnie, ale test trwający 30 minut każdy ("standby", "write", "read") i powtórzony dwa razy miał zapewnić uśrednienie wyników. Tak więc każdy dysk był testowany przez 3 godziny: 6x30 minut w takiej kolejności:
  • Utworzenie czystej partycji.
  • Testy: "standby", "write", "read".
  • Testowa partycja jest odmontowana i zamontowana ponownie.
  • Testy: "standby", "write", "read".

Nie powtarzałem cykli testowych więcej niż dwa razy. Wyniki testów I i II były tak zbieżne, że nie było potrzeby ich powtarzania po raz trzeci.

Kod skryptów testujących można zobaczyć na tej stronie:

***

Przeprowadzałem dwie serie testów każdego dysku:

Przed pierwszymi testami:
Uruchomiałem komputer i sprawdzałem podłączone urządzenia:
camcontrol devlis

Usuwałem tablicę partycji:
gpart delete -i 1 ada4
gpart delete -i 2 ada4
gpart delete -i 3 ada4
gpart delete -i 4 ada4
gpart destroy /dev/ada4

Tworzyłem partycję o rozmiarze 50GB, zakładałem system plików, montowałem i weryfikowałem te czynności:
gpart create -s gpt /dev/ada4
gpart add -s 50G -t freebsd-ufs -l diskpowertest /dev/ada4
newfs -U /dev/gpt/diskpowertest
mount /dev/gpt/diskpowertest /diskpowertest
df -h
Następnie testowałem: "standby", "write", "read".

Przed drugimi testami:
Odmontowałem partycję, zakładałem system plików, montowałem i weryfikowałem te czynności:
umount /diskpowertest
newfs -U /dev/gpt/diskpowertest
mount /dev/gpt/diskpowertest /diskpowertest
df -h
Następnie testowałem: "standby", "write", "read".

***

Miernik ustawiony na zakresie amper (0 A - 10 A), ponieważ zużycie prądu przez dyski przekracza zakres mA (0 A - 0,3 A) użytego multimetru z pomiarem mocy: 
Gossen Metrawatt METRAHIT 29S M229E
Na używanym zakresie pomiarowym  3 A spadek napięcia wynosi 110 mV na górze zakresu. Oznacza to rezystancję bocznika multimetru o wielkości około 36 mΩ. Przy mierzonym natężeniu do 1 A nie będzie to mieć żadnego wpływu na pracę dysków.

Stanowisko testowe. Dysk podłączony pod dodatkowy kontroler i zasilany z komputera. Widoczne chwilowe zużycie energii, napięcie i natężenie zasilające dysk:

Poniższe wskazania mocy pozornej (VA) proszę traktować jako przykładowe, ponieważ wartości zmieniały się ciągle - co jest normalne przy zasilaniu takiego urządzenia.

Widoczne pierwsze osiem sekund jakiegoś pomiaru. Jednocześnie zerowałem watomierz i uruchomiałem skrypt testujący.

Oprócz timera w multimetrze i pracy skryptu ograniczonej czasem, kontrowałem czas stoperem:

Dane do testów zajmowały 1,2 GB i liczyły około 64000 plików. Pliki pochodziły z katalogu /usr/local systemu Freebsd 10.1. Zapisywałem te dane wielokrotnie na dyskach testowych, w kolejnych katalogach, aż do spełnienia warunków określonych w skryptach. 

Pamięć w komputerze ma pojemność 4GB, więc wpływ pamięci cache będzie minimalny - co jest szczególnie ważne przy odczytach. 
  • Przy zapisie wpływ pamięci cache zminimalizowałem wymuszając operacje synchronizacji pamięci z dyskiem po zapisie każdej paczki danych (liczącej 1,2GB).
  • Odczyt jest zoptymalizowany dla uzyskania jak największej szybkości pobierania danych. Program tar pobiera dane i bez kompresji wysyła je do /dev/null. 
  • Test trybu bezczynności dysku wymyśliłem w taki sposób, by dysk nie przeszedł w głębszy stan oszczędzania energii. Spróbowałem symulować sytuację, gdy przeglądarka, albo inny program działający na komputerze co jakiś czas pobierze lub zapisze jakąś małą porcję informacji na dysku. Dlatego co około pięć sekund wykonuję utworzenie nowego pliku (pustego), wymuszam synchronizację pamięci cache z dyskiem i odczytuję ten plik - czyli wykonuję minimalną ilość operacji, co stosunkowo długi okres czasu (5s).



********  TESTY ********

SSD:


Intel SSDSA2M160G2GC 

Test I:
Standby: 238,695 mWh
Write:      974,718 mWh
Read:      468,942 mWh

Test II:
Standby: 237,732 mWh
Write:      949,897 mWh
Read:      466,041 mWh
Test I:

Test II:

Maksymalny pobór energii w teście "standby", "write", "read":

Maksymalne natężenie w teście "standby", "write", "read":
(prawa, dolna liczba)


***

OCZ SD2-1SLD60G


Test I:
Standby: 354,658 mWh
Write:      915,139 mWh
Read:      613,015 mWh

Test II:
Standby: 355,079 mWh
Write:      910,972 mWh
Read:       612,977 mWh
Test I:

Test II:

Maksymalny pobór energii w teście "standby", "write", "read":

Maksymalne natężenie w teście "standby", "write", "read":


***

ADATA SSD 2.5" SATA-2

Test I:
Standby:  414,900 mWh
Write:       959,090 mWh
Read:       669,451 mWh

Test II:
Standby: 413,115 mWh
Write:      951,078 mWh
Read:       671,685 mWh
Test I:

Test II:

Maksymalny pobór energii w teście "standby", "write", "read":

Maksymalne natężenie w teście "standby", "write", "read":


***************


HDD:


Seagate Momentus 5400.4 ST9250827AS

Test I:
Standby:  555,202 mWh
Write:     1351,12   mWh
Read:     1701,68   mWh

Test II:
Standby:  554,741 mWh
Write:      1351,08  mWh
Read:      1705,30  mWh
Test I:

Test II:

Maksymalny pobór energii w teście "standby", "write", "read":

Maksymalne natężenie w teście "standby", "write", "read":


***

Western Digital WD Scorpio WD2500B EVS-26USTO

Test I:
Standby: 575,281 mWh
Write:    1366,36   mWh
Read:    1421,97   mWh

Test II:
Standby: 567,935 mWh
Write:    1365,25   mWh
Read:    1427,84   mWh
Test I:

Test II:

Maksymalny pobór energii w teście "standby", "write", "read":

Maksymalne natężenie w teście "standby", "write", "read":

*
Maksymalne natężenie zmierzone od uruchomienia komputera do zamontowania dysku WD Scorpio:


***

Arkusz kalkulacyjny z danymi:

Spostrzeżenia:

Ciekawe okazały się wyniki pokazujące, że dyski magnetyczne 2,5" pobierają tyle samo, lub więcej, energii odczytując dane, niż je zapisując. Ponieważ odczyt danych dominuje przy standardowym wykorzystaniu dysków twardych nie jest to dobra informacja dla użytkowników laptopów.
Zaskoczyły mnie te wyniki. Jako pewnik przyjmowałem, że zapis danych wymaga więcej energii, niż odczyt. Potwierdziło się to dla dysków SSD, które pobierają nawet trzy razy mniej energii, niż dysk mechaniczny (przy odczycie danych)!
Ponieważ odczyt z mechanicznego dysku magnetycznego przebiega szybciej, niż zapis, to zwiększone zużycie energii musi być związane z szybszą pracą mechanizmu głowicy, większym zużyciem energii przez procesor, szybszą pracą magistrali SATA. Oczywiście najbardziej podejrzewam szybszą pracę głowicy (odczytuje więcej danych i wykonuje więcej ruchów), oraz elektronikę dysku (w tym wielordzeniowy procesor). Przy tak gęstym upakowaniu danych na dysku ich odczyt może wymagać dużo energii na rozróżnienie danych od szumów.


********

Więcej informacji:
Informatyka, FreeBSD, Debian

***

Inne wpisy:


Update: 2015.03.29
Create: 2015.03.23

Brak komentarzy:

Prześlij komentarz