Chcę przetestować ssd (prawdopodobnie z zaszyfrowanymi systemami plików) i porównać go z testami porównawczymi wykonanymi przez crystaldiskmark w systemie Windows.
Jak więc zmierzyć w przybliżeniu te same rzeczy, co robi znak kryształu krystalicznego?
W pierwszym rzędzie (Seq) myślę, że mógłbym zrobić coś takiego
LC_ALL=C dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
sudo su -c "echo 3 > /proc/sys/vm/drop_caches"
LC_ALL=C dd if=tempfile of=/dev/null bs=1M count=1024
Ale nie jestem pewien co do dd
parametrów.
Dla losowych 512KB, 4KB, 4KB (głębokość kolejki = 32) odczytuje / zapisuje testy prędkości. Nie mam pojęcia, jak odtworzyć pomiary w systemie Linux? Jak mogę to zrobić?
Do testowania prędkości odczytu coś takiego sudo hdparm -Tt /dev/sda
wydaje mi się nie mieć sensu, ponieważ chcę na przykład przetestować coś takiego jak encfs
mocowania.
Edytować
@Alko, @iain
Być może powinienem napisać coś o motywacji związanej z tym pytaniem: próbuję przeprowadzić analizę porównawczą mojego dysku SSD i porównać niektóre rozwiązania szyfrujące. Ale to kolejne pytanie ( najlepszy sposób na porównanie różnych rozwiązań szyfrujących w moim systemie ). Podczas surfowania w Internecie o ssd i testach porównawczych często widziałem użytkowników publikujących wyniki CrystelDiskMark na forach. To jest jedyna motywacja do pytania. Chcę tylko zrobić to samo na Linuksie. Dla mojego konkretnego testu porównawczego zobacz moje inne pytanie.
źródło
Odpowiedzi:
Powiedziałbym, że Fio nie będzie miał problemów z produkcją takich obciążeń. Zauważ, że pomimo swojej nazwy CrystalDiskMark jest w rzeczywistości testem porównawczym systemu plików na konkretnym dysku - nie może wykonać operacji we / wy na samym dysku. Jako taki zawsze będzie miał narzut na system plików (niekoniecznie zła rzecz, ale coś, o czym należy pamiętać, np. Ponieważ porównywane systemy plików mogą nie być takie same).
Przykład oparty na replikacji danych wyjściowych na powyższym zrzucie ekranu, uzupełniony informacjami z instrukcji CrystalDiskMark (nie jest to kompletne, ale powinno dać ogólny pomysł):
UWAŻAJ - ten przykład na stałe niszczy dane
/mnt/fs/fiotest.tmp
!Lista parametrów fio znajduje się na stronie http://fio.readthedocs.io/en/latest/fio_doc.html .
źródło
fio
dla systemu Windows.Stworzyłem skrypt, który próbuje odtworzyć zachowanie programu crystalaldiskmark za pomocą fio. Skrypt wykonuje wszystkie testy dostępne w różnych wersjach programu crystalaldiskmark aż do programu crystalaldiskmark 6, w tym testy 512K i 4KQ8T8.
Skrypt zależy od fio i df . Jeśli nie chcesz instalować df, usuń wiersz od 19 do 21 (skrypt nie będzie już wyświetlał, który dysk jest testowany) lub wypróbuj zmodyfikowaną wersję z komentatora . (Może również rozwiązać inne możliwe problemy)
Które wygenerują wyniki takie jak to:
(Wyniki są kodowane kolorem, aby usunąć kodowanie kolorem, usuń wszystkie wystąpienia
\033[x;xxm
(gdzie x jest liczbą) z polecenia echo na dole skryptu.)Skrypt po uruchomieniu bez argumentów przetestuje prędkość twojego dysku / partycji domowej. Możesz również wprowadzić ścieżkę do katalogu na innym dysku twardym, jeśli zamiast tego chcesz to przetestować. Podczas uruchamiania skrypt tworzy ukryte pliki tymczasowe w katalogu docelowym, który czyści po zakończeniu działania (.fiomark.tmp i .fiomark.txt)
Nie widać wyników testów po ich zakończeniu, ale jeśli anulujesz komendę podczas jej działania, zanim zakończy ona wszystkie testy, zobaczysz wyniki zakończonych testów, a pliki tymczasowe również zostaną usunięte.
Po przeprowadzeniu niektórych badań odkryłem, że wyniki testu porównawczego crystalaldiskmark dla tego samego modelu napędu, ponieważ wydaje mi się, że stosunkowo blisko pasują do wyników tego testu porównawczego fio, przynajmniej na pierwszy rzut oka. Ponieważ nie mam instalacji systemu Windows, nie mogę sprawdzić, jak blisko są na pewno na tym samym dysku.
Zauważ, że czasami możesz nieco stracić wyniki, szczególnie jeśli robisz coś w tle podczas testów, więc zaleca się przeprowadzenie testu dwa razy z rzędu w celu porównania wyników.
Testy te trwają długo. Domyślne ustawienia skryptu są obecnie odpowiednie dla zwykłego dysku SSD (SATA).
Zalecane ustawienie SIZE dla różnych dysków:
High End NVME zwykle ma prędkość odczytu około 2 GB / s (Intel Optane i Samsung 960 EVO są przykładami; ale w tym drugim przypadku zaleciłbym zamiast tego 2048 ze względu na wolniejsze prędkości 4kb.), Low-Mid End może mieć gdzieś pomiędzy ~ 500-1800 MB / s prędkości odczytu.
Głównym powodem, dla którego należy dostosować te rozmiary, jest to, jak długo zajęłyby testy, na przykład w przypadku starszych / słabszych dysków twardych prędkość odczytu może wynosić zaledwie 0,4 MB / s. Próbujesz poczekać na 5 pętli 1 GB przy tej prędkości, inne testy 4kb zwykle mają prędkość około 1 MB / s. Mamy ich 6. Czy przy każdym uruchomieniu 5 pętli czekasz na przesłanie 30 GB danych z taką prędkością? A może zamiast tego chcesz obniżyć to do 7,5 GB danych (przy 256 MB / s to test trwający 2-3 godziny)
Oczywiście idealną metodą radzenia sobie z tą sytuacją byłoby uruchomienie testów sekwencyjnych i 512k oddzielnie od testów 4k (więc uruchom testy sekwencyjne i 512k z czymś takim jak np. 512m, a następnie uruchom testy 4k na 32m)
Nowsze modele dysków twardych są jednak wyższej klasy i mogą uzyskać znacznie lepsze wyniki.
I masz to. Cieszyć się!
źródło
--output-format=json
i przeanalizuj JSON. Czytelne dla człowieka wyjście Fio nie jest przeznaczone dla maszyn i nie jest stabilny między wersjami fio. Zobacz ten film na YouTube o przypadku, w którym skrobanie ludzkiej produkcji fio doprowadziło do niepożądanego wyniku )Możesz użyć
iozone
ibonnie
. Mogą robić to, co potrafi znak dysku kryształowego i więcej.iozone
Dużo osobiście korzystałem podczas testów porównawczych i testów warunków skrajnych, od komputerów osobistych po systemy pamięci masowej dla przedsiębiorstw. Ma tryb automatyczny, który robi wszystko, ale możesz go dostosować do swoich potrzeb.źródło
Nie jestem pewien, czy różne głębsze testy mają jakikolwiek sens, gdy rozważamy szczegółowo to, co robisz.
Ustawienia, takie jak rozmiar bloku i głębokość kolejki, są parametrami kontrolującymi parametry wejściowe / wyjściowe niskiego poziomu interfejsu ATA, na którym siedzi dysk SSD.
To wszystko dobrze i dobrze, gdy przeprowadzasz jakiś podstawowy test na dysku dość bezpośrednio, na przykład duży plik w prostym systemie plików podzielonym na partycje.
Gdy zaczniesz mówić o testowaniu porównawczym kodu, parametry te nie dotyczą już w szczególności twojego systemu plików, system plików jest tylko interfejsem do czegoś innego, co ostatecznie opiera się na systemie plików, który jest oparty na dysku.
Myślę, że dobrze byłoby zrozumieć, co dokładnie próbujesz zmierzyć, ponieważ grają tutaj dwa czynniki - szybkość operacji we / wy dysku, którą możesz przetestować, mierząc czas różnych poleceń DD (możesz podać przykłady, jeśli to właśnie want) / without / encfs, inaczej proces będzie ograniczony procesorem przez szyfrowanie i próbujesz przetestować względną przepustowość algorytmu szyfrowania. W takim przypadku parametry głębokości kolejki itp. Nie są szczególnie istotne.
W obu przypadkach polecenie czasowe DD da ci podstawowe statystyki przepustowości, których szukasz, ale powinieneś rozważyć, co zamierzasz zmierzyć i odpowiednie parametry.
To łącze wydaje się być dobrym przewodnikiem po testowaniu szybkości dysku przy użyciu czasowych poleceń DD, w tym niezbędnego zakresu dotyczącego „pokonania buforów / pamięci podręcznej” i tak dalej. Zapewni to prawdopodobnie potrzebne informacje. Zdecyduj, co bardziej Cię interesuje, wydajność dysku lub wydajność szyfrowania, jedno z dwóch będzie wąskim gardłem, a dostrajanie nie-wąskiego gardła niczego nie przyniesie korzyści.
źródło