Re: Wydajność urządzeń - ale tak bardziej praktycznie

Autor: Radoslaw Sokol (rsokol_at_magsoft.com.pl)
Data: Thu 31 Oct 2002 - 12:38:55 MET


Hi,

Artur Gawryszczak wrote:
>
> Wyjątkowo się nie zgodzę z Tobą, Radku :-P Takie kopiowanie będzie
> przebiegało fatalnie wyłącznie tak długo, jak długo jest realizowane
> przez jakieś getchar()/putchar() (a najwyraźniej M$ tak to zrobił), bo

Oj, zdecydowanie nie zrobił. Operacje dyskowe (przynajmniej w
rodzinie NT) to w sporej części normalne inpage/outpage przeno-
szone na sektory dysku.

> wtedy buforowanie w pamięci, jakie jest wykonywane, to pojedyncze
> klastry.

IIRC standard IDE nie przewiduje bezpośredniej możliwości
skopiowania danych zawartych w cache kontrolera do innych
sektorów (popraw mnie, jeśli się mylę). Każda operacja
kopiowania dysków między partycjami musi więc polegać na
odczytaniu fragmentu pliku do RAMu, po czym zapisaniu
tegoż fragmentu w nowym miejscu dysku.

Dopóki ma się do czynienia z prostymi systemami plików (vide
FAT) problem nie jest wielki: system alokuje bufor określonej
wielkości (dla przykładu w NT zależy on od rozmiaru pamięci
i najczęściej wynosi około 8 MB). Zawartość pliku jest czytana
do bufora i zapisywana w nowym miejscu. Na końcu następuje
aktualizacja tablicy alokacji i katalogu.

Gorzej jest z małymi plikami (parę/paręnaście kilo to przypadek
już ekstremalny) -- system plików _powinien_ po skopiowaniu
każdego pliku opróżnić bufory i zapisać w sposób _pewny_
tablicę alokacji i katalog. Inaczej staje się niebezpieczny.
Mogę się mylić, ale IIRC rodzina NT zawsze aktualizuje FAT
i katalog zaraz po zamknięciu pliku, a dane pliku zapisuje
co najwyżej po paru sekundach.

Jeszcze gorzej jest z systemami transakcyjnymi (w szczegól-
ności NTFSem), gdzie każde zapisanie bufora pociąga za sobą
kilka dodatkowych machnięć głowicami w celu zaktualizowania
logów transakcji. Kopiowanie plików między dwiema partycjami
NTFS to już masakra, co wiem z doświadczenia. Do tego dochodzi
nie do końca IMHO przemyślane przeplatanie operacji dyskowych,
bo procesy dopominające się w czasie takiego kopiowania dos-
tępu do dysku potrafią być pod NT zawieszona na paręnaście
dobrych sekund.

-- 
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  mailto:rsokol_at_magsoft.com.pl          |
|                 |  http://www.grush.one.pl/              |
\................... ftp://ftp.grush.one.pl/ ............../


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 01:48:11 MET DST