2014-07-15 12 views
10

Chcę wypełnić miejsce na dysku urządzenia dowolnymi danymi zrzutu w ramach testów warunków skrajnych.Wypełnij miejsce na dysku w urządzeniu z Androidem

Próbowałem pisać bajty do pliku w pamięci zewnętrznej; oczywiście większy rozmiar dysku jest dłuższy, aby go wypełnić. [około pół minuty za 1 GB]

Czy możemy zrobić cokolwiek z powłoki adb w tym przypadku? Sprawdziłem tworzenia zrzutu danych za pomocą poleceniaDD:

dd if=/dev/zero of=/tmp/tempFiller.deleteMe bs=1024 count=$COUNT

które w zasadzie kopie zrzutu danych do pliku docelowego Stąd też bierze dużo czasu. [około 1 minuty na 1 GB]

Czy jest jakaś szybsza metoda? dla zwykłego użytkownika/superużytkownika?

Próbowałem również poleceń fallocate, truncate & mkfile w powłoce adb, ale żadne z tych poleceń nie zostały znalezione nawet w su. Domyślam się, że są to polecenia basha. & Instalacja powłoki bash w urządzeniu z systemem Android będzie wymagać zrootowania urządzenia.

fallocate -l 10G gentoo_root.img 
truncate -s 10M output.file 
mkfile 10240m 10Gigfile 
+0

Czy próbowałeś drastycznie zwiększyć rozmiar bloku? –

+0

@SkyKelsey, tak, próbowałem w obu podejściach; kiedy piszemy bajtowo w pliku programowo, musimy zadbać o maksymalny rozmiar, jaki może pomieścić bytearray (Integer.MAX), a także dostępny stertę do naszej aplikacji. W przypadku polecenia dd, jeśli spróbujemy większego rozmiaru bajtu na raz, to nie działa; więc może to również sprawdza wewnętrznie. – jQueen

Odpowiedz

4

Próbowałem tego samego w przeszłości. Moim celem było zapełnienie całej pamięci urządzenia. Po eksperymentach okazało się, że najlepszym sposobem pisania dużych plików jest dd. Moja najlepsza prędkość była wtedy, gdy użyłem 1 MB na rozmiar bloku. Użyłem 100MB plików, aby zrównoważyć wolne miejsce na urządzeniu.

Pisanie pliku 100MB:

dd if=/dev/zero of=myfile.dat bs=1048576 count=100 

także do szybkich eksperymentów Użyłem napisany darmowa aplikacja FillMemory

+0

Innym sposobem zapełnienia urządzenia jest uruchomienie 'cat file1 >> file1', który na urządzeniach z Androidem czeka aż do momentu, w którym skończy Ci się miejsce na dysku :) –

1

1GB w pół minuty (30 sekund), to prędkość zapisu ponad 30MB/s. Biorąc pod uwagę, że pamięć zewnętrzna na większości urządzeń z Androidem to obecnie karta flash Secure Digital, prędkość ta może równie dobrze być równa prędkości maximum obsługiwanej przez interfejs karty lub karty urządzenia.

Jeśli używasz dd z umiarkowanym rozmiarem bloku (np. bs=1M) nie poprawia to rzeczy, to są szanse, że właśnie osiągnąłeś granice obecnego sprzętu.

Powiązane problemy