Zrobiłem trochę testów porównawczych z operacjami zapisu w urządzeniu z pętlą zwrotną. Oto wniosek:
- Jeśli synchronizujesz po każdym zapisie, wówczas urządzenie sprzężenia zwrotnego działa znacznie gorzej (prawie dwa razy wolniej).
- Jeśli zezwolisz pamięci podręcznej dysku, aby program planujący we / wy wykonał swoje zadanie, nie będzie prawie żadnej różnicy między użyciem urządzenia sprzężenia zwrotnego a bezpośrednim dostępem do dysku.
Wyniki testu
Najpierw uruchomiłem test porównawczy na sprzężeniu zwrotnym w tmpfs o pojemności 8 GB i urządzeniu sprzężonym zwrotnym w tym urządzeniu sprzężonym zwrotnie ( z synchronizacją po każdej operacji zapisu ):
ext4 w tmpfs:
Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s (min 554 max 560)
ext4 w extf w tmpfs:
Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s (min 294 max 299)
Oczywiste jest, że istnieje pewna różnica w wydajności podczas korzystania z urządzeń sprzężenia zwrotnego z synchronizacją przy zapisie.
Następnie powtórzyłem ten sam test na dysku twardym.
ext4 (HDD, 1000 MB, 3 razy):
Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s (min 23.0 max 24.1)
ext4 w ext4 (HDD, 945 MB):
Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s (min 12.7 max 13.0)
Ten sam test porównawczy na HDD, teraz bez synchronizacji po każdym zapisie ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync)mierzony jako <size>/ <time in seconds>).
ext4 (HDD, 1000 MB):
Measured speed: 84.3, 86.1, 83.9, 86.1, 87.7
Average speed : 85.6 MB/s (min 84.3 max 87.7)
ext4 w ext4 (HDD, 945 MB):
Measured speed: 89.9, 97.2, 82.9, 84.0, 82.7
Average speed : 87.3 MB/s (min 82.7 max 97.2)
(nieoczekiwanie test porównawczy pętli zwrotnej wygląda lepiej niż test porównawczy dysku surowego, prawdopodobnie ze względu na mniejszy rozmiar urządzenia pętli zwrotnej, dlatego mniej czasu spędza się na faktycznej synchronizacji z dyskiem)
Konfiguracja testu porównawczego
Najpierw stworzyłem system plików z pętlą zwrotną 8G w moim / tmp (tmpfs):
truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/
Następnie ustaliłem linię bazową, wypełniając zamontowany plik pętli zwrotnej danymi:
$ dd if=/dev/zero bs=1M of=/mnt/bigfile oflag=sync
dd: error writing '/mnt/bigfile': No space left on device
7492+0 records in
7491+0 records out
7855763456 bytes (7.9 GB) copied, 14.0959 s, 557 MB/s
Po wykonaniu tej czynności utworzyłem inne urządzenie sprzężenia zwrotnego w poprzednim urządzeniu sprzężenia zwrotnego:
mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint
I ponownie uruchomiłem test, dziesięć razy:
$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s
a następnie odmontowałem plik testowy i usunąłem go:
sudo umount /tmp/mountpoint
sudo umount /mnt
(podobnie w przypadku testu na dysku twardym, z tym wyjątkiem, że dodałem również, count=1000aby zapobiec zapełnieniu całego dysku przez test)
(i w przypadku testu braku zapisu synchronizacji uruchomiłem czas ddi syncoperację)