Prędkość zapisu NTFS jest naprawdę wolna (<15 MB / s) na Ubuntu

18

Podczas kopiowania dużych plików lub testowania prędkości zapisu dd, maksymalna prędkość zapisu, jaką mogę uzyskać, to około 12-15 MB / s na dyskach z systemem plików NTFS. Przetestowałem wiele dysków (wszystkie połączone za pomocą SATA), z których wszystkie uzyskały prędkość zapisu 100 MB / s + w systemie Windows lub po sformatowaniu za pomocą ext4, więc nie jest to problem z wyrównaniem lub dyskiem.

toppokazuje wysokie użycie procesora dla mount.ntfsprocesu.

Dwurdzeniowy procesor AMD (2,2 GHz)
Wersja jądra: wersja 3.5.0-23-generic
Ubuntu 12.04
ntfs-3g: zarówno 2012.1.15AR.1(wersja domyślna Ubuntu), jak i2013.1.13AR.2

Jak mogę naprawić prędkość zapisu?

Zulakis
źródło
Czy próbowałeś przetestować dd z dostępem surowym (na dysku lub partycji, nie ma znaczenia)? Pamiętaj, że testowanie w ten sposób zniszczy system plików i utraci na nim dane. Pominie całkowicie sterowniki NTFS.
Bob
Tak, właśnie to zrobiłem, wynik jest 149MB/s.
Zulakis
Właśnie z ciekawości muszę zapytać, czy ten dysk jest jednym z tych dysków 4k i czy w związku z tym twój system plików może być w jakiś sposób wyrównywany ?!
Waxhead
4
Uważam, że darmowa wersja NTFS-3G jest okaleczona, dlatego używa 4 zapisów KiB bez buforowania, co powoduje bardzo niską wydajność zapisu na dyskach SSD i napędach USB. Firma stojąca za kierowcą sugeruje zakup wersji komercyjnej, aby uzyskać lepszą wydajność. Najwyraźniej nikomu nie zależy na tyle, by faktycznie naprawić (i w razie potrzeby rozwidlić) wersję open source, ponieważ problem ten istnieje już prawie dekadę, odkąd NTFS-3G został wydany po raz pierwszy.
Tronic
1
Za pomocą tego samego laptopa Ubuntu 2015.04 sformatowałem do NTFS zewnętrzny dysk twardy 320 GB i pamięć USB 32 GB. Kopiowanie 2 GB zdjęć do pierwszego trwało wiecznie (szacuje się, że pozostało 6 godzin po 30 minutach), ale do drugiego (pamięć USB) zajęło to tylko minutę lub dwie. Nie zmieniłem żadnych ustawień między nimi.
Nicolas Raoul,

Odpowiedzi:

18

Poprzedni post był na dobrej drodze z podanym odniesieniem:

być może sprawdź tutaj, co może być przyczyną. http://www.tuxera.com/community/ntfs-3g-faq/#slow

W pierwotnym pytaniu wspomniano o problemie z przesyłaniem dużych plików. Z mojego doświadczenia związanego z kopiowaniem plików multimedialnych lub wykonywaniem kopii zapasowych, kluczową opcją w powyższym FAQ było:

Obejście: użycie opcji montowania „big_writes” ogólnie zmniejsza zużycie procesora, pod warunkiem, że oprogramowanie żądające zapisu obsługuje duże bloki.

Po prostu dodaj opcję big_writes, np

sudo mount -o big_writes /media/<mount_dir> /dev/<device>

Mój Linux NAS z procesorem o niskiej specyfikacji zarządza teraz zapisywaniem dużych plików NTFS około trzy razy szybciej. Poprawiono z ~ 17 MB / s do 50 MB / s +. Widziałem nawet, że zerknie z prędkością około 90 MB / s w iotop, co prawdopodobnie zbliża się do możliwości dysków zewnętrznych (2,5 "dysk twardy USB3).

Ze strony podręcznika NTFS-3G:

 big_writes
              This option prevents fuse from splitting write buffers  into  4K
              chunks,  enabling  big  write buffers to be transferred from the
              application in a single step (up to some system limit, generally
              128K bytes).

Notatki końcowe:

  • opcja big_writes prawdopodobnie nie pomoże w testowaniu losowego zapisu 4K ;-)
  • Podczas gdy Tuxera wydaje się rezerwować pro sterownik NTFS dla osadzonych partnerów systemowych, Paragon oferuje alternatywny bezpłatny do użytku osobistego sterownik NTFS o nazwie NTFS i HFS dla Linux 9.0 Express oraz wersję profesjonalną. Nie gwarantuję jednak tego produktu, a kiedy wypróbowałem poprzednią wersję (8.5), nie mogłem go wtedy uruchomić z moją wersją jądra Linux.
JPvRiel
źródło
Opcja big_writes spowodowała, że ​​mój dysk wzrósł z 300kb / s do 35mb / s! Dzięki!
JosFabre
10 postaci zrobiło świat różnicy, dziękuję bardzo!
João Miguel Brandão,
big_writeszostał wycofany w 2016 r., jednak 3 lata później niektóre dystrybucje nadal używają jeszcze starszej wersji libfuse.
Dmitrij Grigoryjew
2

być może sprawdź tutaj, co może być przyczyną. http://www.tuxera.com/community/ntfs-3g-faq/#slow

To brzmi trochę jak „stare dni”, kiedy plik io nie korzystał domyślnie z DMA. Obecnie jest mało prawdopodobne, ale czy BIOS używa emulacji IDE dla napędów SATA? Ponieważ jeśli emuluje IDE, może również emulować również tryb inny niż DMA.

Innym potencjalnym spowolnieniem jest kompresja plików NTFS. Czy kompresja jest włączona w folderze, do którego piszesz? Jeśli tak, spowoduje to również skompresowanie nowych plików w tym folderze.

BeowulfNode42
źródło
Jak mogę sprawdzić, czy używa DMA? Poza tym wypróbowałem już wszystkie sugestie na stronie.
Zulakis
Uhm, z tego co przeczytałem, DMA dotyczy tylko napędów IDE? Używam tylko dysków SATA.
Zulakis
Według en.wikipedia.org/wiki/Serial_ATA#Transport_layer wygląda na to, że DMA jest jedyną opcją dla SATA. Pozwala dowiedzieć się, czy jego bios używa emulacji ide
BeowulfNode42
0

To jest stary wątek, ale dla osób szukających rozwiązania tego samego problemu: czy masz aktywne cpuspeed? ntfs-3g jest obciążony procesorem, aw moim przypadku cpuspeed błędnie wykrył niskie obciążenie dla procesów z dużą ilością IO, ostatecznie dławiąc rdzeń i głodując sterownik.

Spróbuj wyłączyć cpuspeed (jeśli np. Działa jako usługa) i przetestuj ponownie.

irisx
źródło
Jak ustalić, że cpuspeed jest aktywny? Czy to demon czy ustawienie?
Daniel
0

big_writeszostał wycofany w 2016 r., odpowiednie zachowanie jest zawsze włączone, gdy używana jest libfusewersja 3.0.0 lub nowsza. W nowoczesnym systemie Linux niska wydajność NTFS zwykle oznacza, że:

  • dysk jest pofragmentowany
  • Kompresja dysku NTFS jest włączona
  • syncużywane są nieodpowiednie opcje montażu
Dmitrij Grigoriew
źródło