Cluster Alignment czyli polepszenie wydajności pamięci flash
Wprowadzenie
Cluster Alignment (pol. dopasowanie bloków) to optymalne ustawienie systemu plików na nośniku flash względem bloków pamięci NAND flash.
Sposób zapisywania danych na nośnikach flash jest dość nietypowy w porównaniu z nośnikami opartymi na wirujących talerzach (mechaniczne dyski twarde, dyski optyczne). Nie wnikając w istotę problemu można stwierdzić, że czas adresowania zapisu jest stosunkowo długi. Ponadto każda operacja kasowania lub zapisu przyspiesza moment zepsucia się nośnika. Problem dotyczy w szczególności pamięci flash MLC.
Dla spragnionych bardziej merytorycznej wiedzy na temat budowy i działania pamięci flash podaję dwa linki do zasobów wikipedii:
Ogólnie o pamięciach flash (po polsku):
http://pl.wikipedia.org/wiki/Pamięć_flash
Bardziej szczegółowo o pamięciach flash (po angielsku):
http://en.wikipedia.org/wiki/Flash_memory
Lektura linków nie jest niezbędna ponieważ do samodzielnego dopasowania bloków wystarczy wiedza z ogólnie pojętej obsługi komputerów domowych (partycjonowanie, geometria dysków, system plików i podobne tematy).
Plusy i minusy dopasowania bloków nośnika MLC
Korzyści płynące z przeprowadzenie dopasowania bloków na nośniku flash:
1. Zwiększenie wydajności pamięci flash poprzez
1.1. Polepszenie wydajności zapisu losowego (15-100%)
1.2. Polepszenie wydajności zapisu ciągłego (15-70%)
1.3. Znikome poprawienie wydajności odczytu (<10%)
2. Zwiększenie żywotności pamięci flash
Niedogodności związane z przeprowadzeniem dopasowania bloków:
1. Konieczna podstawowa znajomość zagadnień związanych z
1.1. Geometrią dysków twardych
1.2. Partycjonowaniem
1.3. Systemem plików
1.4. Formatowaniem
1.5. Uruchamianiem systemów operacyjnych z pamięci masowych
2. Możliwość utraty kompatybilności nośnika z danym urządzeniem
3. Możliwość utraty bootowania z nośnika
4. Konieczność zgrania danych z nośnika przed rozpoczęciem operacji
Uwagi:
Omawiana dalej metoda może okazać się niepraktyczna dla pamięci flash SLC ze względu na o wiele krótszy czas adresowania zapisów. Względnie mały czas adresowania zapisów utrudnia odnalezienie krawędzi bloków pamięci flash.
Wydaje się jednak, że plusy przysłonią minusy bardziej rozgarniętym przedstawicielom społeczności elektroda.pl.
Źródła zewnętrzne
Pierwszą stroną www, na której spotkałem się opisem problemu:
http://forum.ixbt.com/post.cgi?id=print:27:9465
oraz jej automatyczne tłumaczenie:
http://translate.google.com/translate?prev=_t...A9465&sl=ru&tl=pl&history_state0=
Adres strony dostarczył mi gader, za co jestem bardzo wdzięczny.
Można w niej znaleźć następujący link do bardzo potrzebnego programu:
http://vlo.nm.ru/tmp/dfboff64.rar
(w razie potrzeby dodam program jako załącznik)
Można również znaleźć dwa umiarkowanie przydatne linki o geometrii, partycjonowaniu i formatowaniu kart pamięci flash:
http://www.hjreggel.net/cardspeed/info-formatting.html
http://www.hjreggel.net/cardspeed/cs_calign.html
Oba linki nie zawierają informacji o oprogramowaniu potrzebnym do przeprowadzenia dopasowania bloków na własną rękę, dlatego - moim zdaniem - chodź dość treściwe są mało przydatne. Wydaje mi się, że autor intencjonalnie nie ułatwił zadania podając gotowe rozwiązania w celu wykluczenia amatorów o niedostatecznej znajomości tematu.
Zanim zdecydujesz się na samodzielne dopasowanie bloków
Kilka przykładów, w których dopasowanie bloków ma sens:
• pendrive, pamięci USB na dane
• karty pamięci do aparatów fotograficznych (należy zweryfikować kompatybilność)
• karty pamięci do niektórych urządzeń mobilnych (należy zweryfikować kompatybilność)
• karty pamięci CF pracujące w roli SSD (należy zweryfikować bootowanie)
Kilka przykładów, w których dopasowanie bloków może zakończyć się katastrofą:
• pamięć wewnętrzna urządzeń mobilnych (mp3, iPody itp.)
• karty pamięci pracujące w starszych modelach aparatów cyfrowych, PDA i innych
• dyski startowe DOS (możliwość braku wyrównania partycji do głowicy/cylindra)
Przed przystąpieniem do jakichkolwiek manipulacji partycjami oraz systemem plików należy zabezpieczyć dane z nośnika (o ile są na nim ważne dane). Dobrze jest również powielić początkowe sektory nośnika aż do początku ostatniej partycji i zapisać je jako plik na innym nośniku fizycznym. Można to zrobić za pomocą programu DMDE, taki backup nie powinien być za duży – rozmiar będzie zależny od ilości partycji oraz od ich położenia.
Na nośniku flash z dopasowanymi blokami często traci się wyrównanie do głowicy/sektora. Obecne systemy operacyjne takie jak Windows XP nie wymagają już wyrównania partycji do geometrii CHS. Niemniej jednak bez wyrównania partycji do aktywnej geometrii CHS traci się możliwość bootowania DOS (możliwe problemy również w Win 95/98/Mela).
Niezbędny sprzęt, oprogramowanie oraz inne wymagania
Użytkownik posiadający minimum:
• pełnię sprawności intelektualnej
• umiejętność czytania ze zrozumieniem (po polsku i angielsku)
• podstawową wiedzę z dziedziny partycjonowania, formatowania, systemów plików
• świadomość niedoskonałości opracowania z którego korzysta
Potrzebny sprzęt:
• nośnik flash, na którym zostanie przeprowadzone wyrównanie bloków
• komputer posiadający możliwość bootowania ze stacji dyskietek, napędu optycznego lub USB
• nośniki dla alternatywnej drogi bootowania (dyskietka, płyta CD-RW, pendrive, czytnik i karta pamięci)
Potrzebne oprogramowanie:
• program do pomiaru zapisu blokowego: http://vlo.nm.ru/tmp/dfboff64.rar (platforma Windows)
oraz (zależnie od wariantu)
• program do formatowania z możliwością wyboru systemu plików oraz wielkości klastra
• program do partycjonowania z możliwością dowolnego tworzenia partycji w oparciu o adres LBA/CHS sektora
Uwaga!
Przed przystąpieniem do jakichkolwiek „badań” na danym nośniku proszę zabezpieczyć dane poprzez powielenie na inny fizyczny nośnik danych. Autor opracowania nie ponosi jakiejkolwiek odpowiedzialności za utratę danych oraz szkody będące konsekwencją braku wiedzy lub nieświadomości czytającego oraz inne szkody powstałe podczas przeprowadzania opisywanych tutaj czynności.
Omówienie metody pomiarowej stosowanej przez program „dfboff64.exe”
Program dfboff64.exe służy do znajdowania „offsetu” oraz „okresu” bloków pamięci flash na danym nośniku. „Offset” określa przesunięcie klastrów systemu plików względem bloków pamięci NAND flash wyrażone w sektorach (512B). „Okres” to rozmiar bloku pamięci NAND flash wyrażony w całkowitej ilości sektorów.
Na podstawie wielkości „offsetu” koryguje się położenie pierwszego klastra obszaru danych w systemie plików FAT. Początek obszaru danych musi pokrywać się z krawędzią bloku pamięci NAND flash. Jest to warunek konieczny poprawnego dopasowania bloków.
Wielkość „okresu” to optymalny rozmiar klastra w systemie plików. Alternatywnie można zastosować jego całkowitą wielokrotność, ale utraci się pewną część wydajności oraz powiększy się marnowanie przestrzeni dyskowej (ang. cluster waste). Można również zastosować ułamek całkowity okresu jako rozmiar klastra tracąc część wydajności ale za to zmniejszając marnowanie przestrzeni dyskowej.
Uwagi:
System plików NTFS nie nadaje się na potrzeby wyrównywania bloków ze względu na brak możliwości pokrywania się klastrów systemu blików z blokami pamięci flash w całym obszarze przewidzianym do zapisu danych. Być może da się to zmienić, ale ja nie mam zamiaru próbować.
Schemat czynności potrzebnych do uzyskania dopasowania bloków
1. Dokonanie pomiarów za pomocą programu dfboff64.exe
1.1. Znalezienie „offsetu”
1.2. Znalezienie „okresu”
Dalej możliwe są trzy scenariusze:
2. A. „Offset” wynosi 0, „okres” jest równy rozmiarowi klastra systemu plików
(nośnik flash ma już dopasowane bloki – tutaj nic się już nie ulepszy)
2. B. „Offset” wynosi 0, „okres” jest różny od rozmiaru klastra systemu plików
2. C. „Offset” jest różny od 0
Omówienie wariantu „B”
1. Nośnik należy sformatować używając programu dającego możliwość definiowania rozmiaru klastra. Rozmiar klastra powinien być równy wielości bloku pamięci flash.
2. Ponowne wykonanie pomiarów za pomocą programu dfboff64.exe i weryfikacja położenia „offsetu”. Jeżeli „offset” się przesunął należy przejść do wariantu „C”
Uwaga!
Przed przystąpieniem do wariantu „C” należy upewnić się, że „offset” oraz „okres” są wyznaczone poprawnie. Aby się upewnić należy powtórzyć pomiar wykonany programem dfboff64.exe, można zmienić część ustawień (patrz Wykonywanie pomiarów za pomocą programu „dfboff64.exe”).
Omówienie wariantu „C”
1. Przesuń początek badanej partycji o dodatnią wartość „offsetu” (tu przedtem wkradł się błąd, było "ujemną"). Dodatkowo położenie początku partycji można modyfikować przesuwając go o całkowite wartości „okresu”.
Uwaga!
Zwykle przesunięcie partycji oznacza utratę wyrównania do krawędzi głowicy/cylindra co prowadzi do problemów z bootowaniem z tej partycji niektórych systemów operacyjnych (DOS). Ponadto niektóre programy narzędziowe „dostają trwogi” na widok tak utworzonych partycji (chociażby Partition Magic).
2. Postępuj dalej jak w wariancie „B”.
Uwagi:
Wskazane jest używanie jednego programu do partycjonowani oraz jednego do formatowania.
Dla platformy Windows wystarczy legendarne polecenie „format” z wiersza poleceń oraz program „Ranish Partition Manager” (po odpowiednich modyfikacjach można go uruchamiać z bootowalnego USB zamiast z dysków optycznych czy też antycznej stacji dyskietek).
Wykonywanie pomiarów za pomocą programu „dfboff64.exe”
Przed wykonywaniem jakichkolwiek pomiarów powinno się zapewnić możliwie dużą przepustowość interfejsu (złącza, kontrolera) do którego zostanie podłączony nośnik flash. O ile w przypadku pendrive USB nie ma problemu to w przypadku wydajniejszych kart CF UDMA najlepiej jest skorzystać z kontrolera IDE za pomocą odpowiedniej przelotki.
W przypadku kart SD (i podobnych względnie "małych" kart pamięci) oraz CF MLC (w tym również UDMA) wystarczy czytnik kart USB o prędkości zapisu ciągłego na poziomie 10-15MB/s.
Uruchomienie pliku dfboff64.exe otwiera okienko z dwoma przyciskami których nie trzeba nikomu specjalnie przedstawiać. Kliknięcie na ten „słuszny” otwiera kolejne okno, tym razem posiadające możliwość konfiguracji pomiaru.
Obrazek 1. Okno domyślnej konfiguracji pomiaru w programie „dfboff64”
Opis opcji programu:
Drive to test – wybór dysku logicznego (partycji) na której będą prowadzone pomiary; należy wybrać literkę „dysku” przypisaną do badanego nośnika flash
Disk buffer (KB) – rozmiar sprzętowego bufora dysku twardego; w przypadku nośników typu flash (pendrive USB, karty pamięci) należy wpisać 0
[v] Disable Windows buffering – wyłączenie buforowania odczytu/zapisu na dysk logiczny podczas testu; ta opcja musi być włączona, inaczej dostaniesz zniekształcone wyniki
Total MB to r/w – długość pliku testowego; dla kart pamięci SD oraz pendrive USB lepiej zmniejszyć do 12-18MB
AccTry – (Access Try) ilość prób adresowania; jest brana pod uwagę razem gdy RdAcc i/lub WrAcc jest włączone; można ustawić na 0 na wszelki wypadek
[v] RdSpd – (Read Speed) przełącznik testu odczytu; ta opcja powinna być wyłączona
[v] WrSpd – (Write Speed) przełącznik testu zapisu; ta opcja musi być włączona
[v] RdAcc – (Read Access) przełącznik test opóźnienia odczytu; ta opcja powinna być wyłączona
[v] WrAcc – (Write Access) przełącznik test opóźnienia zapisu; ta opcja powinna być wyłączona
Domyślnie skonfigurowany test do niczego sensownego się nie przyda. Dlatego należy go dostosować do indywidualnych potrzeb.
Należy dokonać podstawowego wyboru opcji Drive to test wskazując badany nośnik flash. Dalej należy odznaczyć opcje RdSpd, RdAcc oraz WrAcc. Można też ustawić AccTry na 0 na wszelki wypadek. Dla typowych kart pamięci i pamięci USB należy zmniejszyć Disk buffer (KB) do 0. Sporadycznie można spotkać urządzenia flash posiadające wbudowany bufor zapisu (niektóre pendrive Toshiba są o to „podejrzewane”). Ostatnia opcja – Total MB to r/w – będzie przekładać się na czas pracy testu i na statystyczną poprawność wyników. Wartość powinna stanowić 1-3 krotność nominalnej prędkości zapisu na nośnik flash. Nie należy przesadzać, gdyż każdy zapis zużywa nośnik flash. Poniżej znajduje się okno przykładowej konfiguracji do badania popularnego pendrive USB Kingston DT100 4GB.
Obrazek 2. Okno przykładowej konfiguracji pomiaru w programie „dfboff64”
Po uruchomieniu testu przyciskiem Start test pojawia się okienko z przyciskiem do przerwania testu, ale nawet jeśli się na niego kliknie to nic się nie dzieje poza ogólnymi objawami „zwisu”. Należy poczekać do końca test, aż przycisk zmieni nazwę na Ok.
Obrazek 3. Okienko zakończonego pomiaru
W katalogu, w którym znajdował się plik „dfboff64.exe” pojawia się plik „benchlog.txt”. Należy zmienić jego nazwę, aby zachować uzyskane wyniki pomiarów (program nadpisuje ten plik podczas kolejnego uruchomienia). Przy zmianie nazwy warto podać nazwę nośnika flash (chociażby USB_Kingston_DT100_4GB) oraz systemu plików i rozmiar klastra (FAT32_4).
Plik z wynikami pomiarów (zwany pierwotnie „benchlog.txt”) zawiera linuxowe znaki końca wiersza i najlepiej oglądać go w przeglądarce internetowej aby nie stracić podstawowego formatowania.
Plik z wynikami pomiarów uzyskany z poprawnie skonfigurowanego programu powinien składać się z następujących po sobie wierszy o postaci pokazanej poniżej.
Wyniki pomiarów dobrze jest zaimportować do arkusza kalkulacyjnego, a następnie doprowadzić do postaci wykresu słupkowego typu y = f(x), gdzie y to liczba wyrażona w „KB/s” zaś x to liczba znajdująca się pomiędzy „(+” oraz „/” i wyrażona w „S” (S – sektor, czyli 512B). Wizualizacja danych bardzo ułatwia znalezienie szczytów, a na ich podstawie „offsetu” i „okresu”.
Jeżeli wynik pomiaru jest mało czytelny nawet na wykresie to można zwiększyć wartość pola Disk buffer (KB) oraz Total MB to r/w (w tym drugim przypadku nie należy przeginać).
Szczyty mogą znajdować się w odległości 4S, 8S, 16S lub 32S dając „okres”. „Offset” znajduje się w miejscu pierwszego wystąpienia szczytu (w niektórych przypadkach nie widać tego na wykresie i trzeba to wyliczyć na podstawie pozostałych szczytów i wartości „okresu”).
Mając znaleziony „offset” oraz „okres” można przystąpić do wykonywania dalszych czynności opisanych w dziale Schemat czynności potrzebnych do uzyskania dopasowania bloków.
Przykłady dopasowania bloków na wybranych nośnikach flash
W tym podrozdziale zamierzam pokazać kilka przykładów dopasowania bloków na różnych popularnych nośnikach flash.
Wprowadzenie
Cluster Alignment (pol. dopasowanie bloków) to optymalne ustawienie systemu plików na nośniku flash względem bloków pamięci NAND flash.
Sposób zapisywania danych na nośnikach flash jest dość nietypowy w porównaniu z nośnikami opartymi na wirujących talerzach (mechaniczne dyski twarde, dyski optyczne). Nie wnikając w istotę problemu można stwierdzić, że czas adresowania zapisu jest stosunkowo długi. Ponadto każda operacja kasowania lub zapisu przyspiesza moment zepsucia się nośnika. Problem dotyczy w szczególności pamięci flash MLC.
Dla spragnionych bardziej merytorycznej wiedzy na temat budowy i działania pamięci flash podaję dwa linki do zasobów wikipedii:
Ogólnie o pamięciach flash (po polsku):

Bardziej szczegółowo o pamięciach flash (po angielsku):

Lektura linków nie jest niezbędna ponieważ do samodzielnego dopasowania bloków wystarczy wiedza z ogólnie pojętej obsługi komputerów domowych (partycjonowanie, geometria dysków, system plików i podobne tematy).
Plusy i minusy dopasowania bloków nośnika MLC
Korzyści płynące z przeprowadzenie dopasowania bloków na nośniku flash:
1. Zwiększenie wydajności pamięci flash poprzez
1.1. Polepszenie wydajności zapisu losowego (15-100%)
1.2. Polepszenie wydajności zapisu ciągłego (15-70%)
1.3. Znikome poprawienie wydajności odczytu (<10%)
2. Zwiększenie żywotności pamięci flash
Niedogodności związane z przeprowadzeniem dopasowania bloków:
1. Konieczna podstawowa znajomość zagadnień związanych z
1.1. Geometrią dysków twardych
1.2. Partycjonowaniem
1.3. Systemem plików
1.4. Formatowaniem
1.5. Uruchamianiem systemów operacyjnych z pamięci masowych
2. Możliwość utraty kompatybilności nośnika z danym urządzeniem
3. Możliwość utraty bootowania z nośnika
4. Konieczność zgrania danych z nośnika przed rozpoczęciem operacji
Uwagi:
Omawiana dalej metoda może okazać się niepraktyczna dla pamięci flash SLC ze względu na o wiele krótszy czas adresowania zapisów. Względnie mały czas adresowania zapisów utrudnia odnalezienie krawędzi bloków pamięci flash.
Wydaje się jednak, że plusy przysłonią minusy bardziej rozgarniętym przedstawicielom społeczności elektroda.pl.
Źródła zewnętrzne
Pierwszą stroną www, na której spotkałem się opisem problemu:

oraz jej automatyczne tłumaczenie:

Adres strony dostarczył mi gader, za co jestem bardzo wdzięczny.
Można w niej znaleźć następujący link do bardzo potrzebnego programu:

(w razie potrzeby dodam program jako załącznik)
Można również znaleźć dwa umiarkowanie przydatne linki o geometrii, partycjonowaniu i formatowaniu kart pamięci flash:


Oba linki nie zawierają informacji o oprogramowaniu potrzebnym do przeprowadzenia dopasowania bloków na własną rękę, dlatego - moim zdaniem - chodź dość treściwe są mało przydatne. Wydaje mi się, że autor intencjonalnie nie ułatwił zadania podając gotowe rozwiązania w celu wykluczenia amatorów o niedostatecznej znajomości tematu.
Zanim zdecydujesz się na samodzielne dopasowanie bloków
Kilka przykładów, w których dopasowanie bloków ma sens:
• pendrive, pamięci USB na dane
• karty pamięci do aparatów fotograficznych (należy zweryfikować kompatybilność)
• karty pamięci do niektórych urządzeń mobilnych (należy zweryfikować kompatybilność)
• karty pamięci CF pracujące w roli SSD (należy zweryfikować bootowanie)
Kilka przykładów, w których dopasowanie bloków może zakończyć się katastrofą:
• pamięć wewnętrzna urządzeń mobilnych (mp3, iPody itp.)
• karty pamięci pracujące w starszych modelach aparatów cyfrowych, PDA i innych
• dyski startowe DOS (możliwość braku wyrównania partycji do głowicy/cylindra)
Przed przystąpieniem do jakichkolwiek manipulacji partycjami oraz systemem plików należy zabezpieczyć dane z nośnika (o ile są na nim ważne dane). Dobrze jest również powielić początkowe sektory nośnika aż do początku ostatniej partycji i zapisać je jako plik na innym nośniku fizycznym. Można to zrobić za pomocą programu DMDE, taki backup nie powinien być za duży – rozmiar będzie zależny od ilości partycji oraz od ich położenia.
Na nośniku flash z dopasowanymi blokami często traci się wyrównanie do głowicy/sektora. Obecne systemy operacyjne takie jak Windows XP nie wymagają już wyrównania partycji do geometrii CHS. Niemniej jednak bez wyrównania partycji do aktywnej geometrii CHS traci się możliwość bootowania DOS (możliwe problemy również w Win 95/98/Mela).
Niezbędny sprzęt, oprogramowanie oraz inne wymagania
Użytkownik posiadający minimum:
• pełnię sprawności intelektualnej
• umiejętność czytania ze zrozumieniem (po polsku i angielsku)
• podstawową wiedzę z dziedziny partycjonowania, formatowania, systemów plików
• świadomość niedoskonałości opracowania z którego korzysta
Potrzebny sprzęt:
• nośnik flash, na którym zostanie przeprowadzone wyrównanie bloków
• komputer posiadający możliwość bootowania ze stacji dyskietek, napędu optycznego lub USB
• nośniki dla alternatywnej drogi bootowania (dyskietka, płyta CD-RW, pendrive, czytnik i karta pamięci)
Potrzebne oprogramowanie:
• program do pomiaru zapisu blokowego: http://vlo.nm.ru/tmp/dfboff64.rar (platforma Windows)
oraz (zależnie od wariantu)
• program do formatowania z możliwością wyboru systemu plików oraz wielkości klastra
• program do partycjonowania z możliwością dowolnego tworzenia partycji w oparciu o adres LBA/CHS sektora
Uwaga!
Przed przystąpieniem do jakichkolwiek „badań” na danym nośniku proszę zabezpieczyć dane poprzez powielenie na inny fizyczny nośnik danych. Autor opracowania nie ponosi jakiejkolwiek odpowiedzialności za utratę danych oraz szkody będące konsekwencją braku wiedzy lub nieświadomości czytającego oraz inne szkody powstałe podczas przeprowadzania opisywanych tutaj czynności.
Omówienie metody pomiarowej stosowanej przez program „dfboff64.exe”
Program dfboff64.exe służy do znajdowania „offsetu” oraz „okresu” bloków pamięci flash na danym nośniku. „Offset” określa przesunięcie klastrów systemu plików względem bloków pamięci NAND flash wyrażone w sektorach (512B). „Okres” to rozmiar bloku pamięci NAND flash wyrażony w całkowitej ilości sektorów.
Na podstawie wielkości „offsetu” koryguje się położenie pierwszego klastra obszaru danych w systemie plików FAT. Początek obszaru danych musi pokrywać się z krawędzią bloku pamięci NAND flash. Jest to warunek konieczny poprawnego dopasowania bloków.
Wielkość „okresu” to optymalny rozmiar klastra w systemie plików. Alternatywnie można zastosować jego całkowitą wielokrotność, ale utraci się pewną część wydajności oraz powiększy się marnowanie przestrzeni dyskowej (ang. cluster waste). Można również zastosować ułamek całkowity okresu jako rozmiar klastra tracąc część wydajności ale za to zmniejszając marnowanie przestrzeni dyskowej.
Uwagi:
System plików NTFS nie nadaje się na potrzeby wyrównywania bloków ze względu na brak możliwości pokrywania się klastrów systemu blików z blokami pamięci flash w całym obszarze przewidzianym do zapisu danych. Być może da się to zmienić, ale ja nie mam zamiaru próbować.
Schemat czynności potrzebnych do uzyskania dopasowania bloków
1. Dokonanie pomiarów za pomocą programu dfboff64.exe
1.1. Znalezienie „offsetu”
1.2. Znalezienie „okresu”
Dalej możliwe są trzy scenariusze:
2. A. „Offset” wynosi 0, „okres” jest równy rozmiarowi klastra systemu plików
(nośnik flash ma już dopasowane bloki – tutaj nic się już nie ulepszy)
2. B. „Offset” wynosi 0, „okres” jest różny od rozmiaru klastra systemu plików
2. C. „Offset” jest różny od 0
Omówienie wariantu „B”
1. Nośnik należy sformatować używając programu dającego możliwość definiowania rozmiaru klastra. Rozmiar klastra powinien być równy wielości bloku pamięci flash.
2. Ponowne wykonanie pomiarów za pomocą programu dfboff64.exe i weryfikacja położenia „offsetu”. Jeżeli „offset” się przesunął należy przejść do wariantu „C”
Uwaga!
Przed przystąpieniem do wariantu „C” należy upewnić się, że „offset” oraz „okres” są wyznaczone poprawnie. Aby się upewnić należy powtórzyć pomiar wykonany programem dfboff64.exe, można zmienić część ustawień (patrz Wykonywanie pomiarów za pomocą programu „dfboff64.exe”).
Omówienie wariantu „C”
1. Przesuń początek badanej partycji o dodatnią wartość „offsetu” (tu przedtem wkradł się błąd, było "ujemną"). Dodatkowo położenie początku partycji można modyfikować przesuwając go o całkowite wartości „okresu”.
Uwaga!
Zwykle przesunięcie partycji oznacza utratę wyrównania do krawędzi głowicy/cylindra co prowadzi do problemów z bootowaniem z tej partycji niektórych systemów operacyjnych (DOS). Ponadto niektóre programy narzędziowe „dostają trwogi” na widok tak utworzonych partycji (chociażby Partition Magic).
2. Postępuj dalej jak w wariancie „B”.
Uwagi:
Wskazane jest używanie jednego programu do partycjonowani oraz jednego do formatowania.
Dla platformy Windows wystarczy legendarne polecenie „format” z wiersza poleceń oraz program „Ranish Partition Manager” (po odpowiednich modyfikacjach można go uruchamiać z bootowalnego USB zamiast z dysków optycznych czy też antycznej stacji dyskietek).
Wykonywanie pomiarów za pomocą programu „dfboff64.exe”
Przed wykonywaniem jakichkolwiek pomiarów powinno się zapewnić możliwie dużą przepustowość interfejsu (złącza, kontrolera) do którego zostanie podłączony nośnik flash. O ile w przypadku pendrive USB nie ma problemu to w przypadku wydajniejszych kart CF UDMA najlepiej jest skorzystać z kontrolera IDE za pomocą odpowiedniej przelotki.
W przypadku kart SD (i podobnych względnie "małych" kart pamięci) oraz CF MLC (w tym również UDMA) wystarczy czytnik kart USB o prędkości zapisu ciągłego na poziomie 10-15MB/s.
Uruchomienie pliku dfboff64.exe otwiera okienko z dwoma przyciskami których nie trzeba nikomu specjalnie przedstawiać. Kliknięcie na ten „słuszny” otwiera kolejne okno, tym razem posiadające możliwość konfiguracji pomiaru.
Obrazek 1. Okno domyślnej konfiguracji pomiaru w programie „dfboff64”

Opis opcji programu:
Drive to test – wybór dysku logicznego (partycji) na której będą prowadzone pomiary; należy wybrać literkę „dysku” przypisaną do badanego nośnika flash
Disk buffer (KB) – rozmiar sprzętowego bufora dysku twardego; w przypadku nośników typu flash (pendrive USB, karty pamięci) należy wpisać 0
[v] Disable Windows buffering – wyłączenie buforowania odczytu/zapisu na dysk logiczny podczas testu; ta opcja musi być włączona, inaczej dostaniesz zniekształcone wyniki
Total MB to r/w – długość pliku testowego; dla kart pamięci SD oraz pendrive USB lepiej zmniejszyć do 12-18MB
AccTry – (Access Try) ilość prób adresowania; jest brana pod uwagę razem gdy RdAcc i/lub WrAcc jest włączone; można ustawić na 0 na wszelki wypadek
[v] RdSpd – (Read Speed) przełącznik testu odczytu; ta opcja powinna być wyłączona
[v] WrSpd – (Write Speed) przełącznik testu zapisu; ta opcja musi być włączona
[v] RdAcc – (Read Access) przełącznik test opóźnienia odczytu; ta opcja powinna być wyłączona
[v] WrAcc – (Write Access) przełącznik test opóźnienia zapisu; ta opcja powinna być wyłączona
Domyślnie skonfigurowany test do niczego sensownego się nie przyda. Dlatego należy go dostosować do indywidualnych potrzeb.
Należy dokonać podstawowego wyboru opcji Drive to test wskazując badany nośnik flash. Dalej należy odznaczyć opcje RdSpd, RdAcc oraz WrAcc. Można też ustawić AccTry na 0 na wszelki wypadek. Dla typowych kart pamięci i pamięci USB należy zmniejszyć Disk buffer (KB) do 0. Sporadycznie można spotkać urządzenia flash posiadające wbudowany bufor zapisu (niektóre pendrive Toshiba są o to „podejrzewane”). Ostatnia opcja – Total MB to r/w – będzie przekładać się na czas pracy testu i na statystyczną poprawność wyników. Wartość powinna stanowić 1-3 krotność nominalnej prędkości zapisu na nośnik flash. Nie należy przesadzać, gdyż każdy zapis zużywa nośnik flash. Poniżej znajduje się okno przykładowej konfiguracji do badania popularnego pendrive USB Kingston DT100 4GB.
Obrazek 2. Okno przykładowej konfiguracji pomiaru w programie „dfboff64”

Po uruchomieniu testu przyciskiem Start test pojawia się okienko z przyciskiem do przerwania testu, ale nawet jeśli się na niego kliknie to nic się nie dzieje poza ogólnymi objawami „zwisu”. Należy poczekać do końca test, aż przycisk zmieni nazwę na Ok.
Obrazek 3. Okienko zakończonego pomiaru

W katalogu, w którym znajdował się plik „dfboff64.exe” pojawia się plik „benchlog.txt”. Należy zmienić jego nazwę, aby zachować uzyskane wyniki pomiarów (program nadpisuje ten plik podczas kolejnego uruchomienia). Przy zmianie nazwy warto podać nazwę nośnika flash (chociażby USB_Kingston_DT100_4GB) oraz systemu plików i rozmiar klastra (FAT32_4).
Plik z wynikami pomiarów (zwany pierwotnie „benchlog.txt”) zawiera linuxowe znaki końca wiersza i najlepiej oglądać go w przeglądarce internetowej aby nie stracić podstawowego formatowania.
Plik z wynikami pomiarów uzyskany z poprawnie skonfigurowanego programu powinien składać się z następujących po sobie wierszy o postaci pokazanej poniżej.
Code:
Sustained write : 5191 KB/s (+0/0)
Sustained write : 6639 KB/s (+1/512)
...
aż do
Sustained write : 5461 KB/s (+63/32256)
Wyniki pomiarów dobrze jest zaimportować do arkusza kalkulacyjnego, a następnie doprowadzić do postaci wykresu słupkowego typu y = f(x), gdzie y to liczba wyrażona w „KB/s” zaś x to liczba znajdująca się pomiędzy „(+” oraz „/” i wyrażona w „S” (S – sektor, czyli 512B). Wizualizacja danych bardzo ułatwia znalezienie szczytów, a na ich podstawie „offsetu” i „okresu”.
Jeżeli wynik pomiaru jest mało czytelny nawet na wykresie to można zwiększyć wartość pola Disk buffer (KB) oraz Total MB to r/w (w tym drugim przypadku nie należy przeginać).
Szczyty mogą znajdować się w odległości 4S, 8S, 16S lub 32S dając „okres”. „Offset” znajduje się w miejscu pierwszego wystąpienia szczytu (w niektórych przypadkach nie widać tego na wykresie i trzeba to wyliczyć na podstawie pozostałych szczytów i wartości „okresu”).
Mając znaleziony „offset” oraz „okres” można przystąpić do wykonywania dalszych czynności opisanych w dziale Schemat czynności potrzebnych do uzyskania dopasowania bloków.
Przykłady dopasowania bloków na wybranych nośnikach flash
W tym podrozdziale zamierzam pokazać kilka przykładów dopasowania bloków na różnych popularnych nośnikach flash.