Próbuję skopiować plik 200 GB z podłączenia NFS na dysk lokalny. Dysk lokalny to system plików XFS na LVM na systemie RAID 5 (sprzętowy kontroler RAID).
używam rsync
do monitorowania prędkości transferu. Na początku prędkość IO wynosi około 200 MB / s, stabilna dla pierwszych 18 GB. Ale wydajność spada o 10-20 i nigdy nie powraca do początkowej stawki. Czasami osiąga około 50-100 MB / s, ale tylko przez kilka sekund, a następnie proces wydaje się zawiesić na chwilę.
Jednocześnie wszystkie operacje na plikach w docelowym systemie plików blokują się przez długi czas (minuty). Przerwanie blokowania procesu kopiowania na kilka minut. Kolejne usunięcie częściowo skopiowanego pliku zajmuje również kilka minut.
Jakieś pomysły, które mogą to powodować?
źródło
Odpowiedzi:
Dzięki komentarzowi odrzutowca zajrzałem do buforowania dysku IO pod Linuksem. Okazuje się, że ponieważ system ma dużo pamięci RAM (48 GB), która jest prawie bezpłatna, wiele jest wykorzystywane do pamięci podręcznej we / wy.
Monitorowałem / proc / meminfo i szukałem pól 'Dirty' (brudne strony cache I / O) i 'Writeback' (zapisywane brudne strony na dysku).
Pokazuje, że Dirty zwiększa się do około 18 GB, a następnie ponownie spada, podczas gdy Retrospekcja zwiększa się, po zapisaniu Brudnych stron, rośnie ponownie itd. Monitorowanie dysku io
iostat
widać, że podczas buforowania dysk nie zapisuje, tylko gdy „Zapisywanie” zmniejsza dane, zapisywane są na dysk. Prędkość zapisu wynosi około 15 MB / s.Tak więc pierwsze 18 GB jest szybkie, zapisywane w pamięci podręcznej, ale wtedy, gdy wystąpi rzeczywiste zapisanie, zwalnia i podczas zapisywania dyskowe we / wy jest nasycone i blokowane, dopóki wszystkie brudne strony nie zostaną wysłane na dysk.
źródło