treadahead Упреждающее чтение Тип файла: команда usage: %s [OPTION]... [FILE]... Readahead = чтение данных в кэш страниц Linux до того, как они потребуются во время загрузки. Упреждающее чтение — это тестовая программа для экспериментов с различными параметрами упреждающего чтения. Помимо фактического выполнения операций опережающего чтения, он включает в себя средства для записи iowait до и после последовательности опережающего чтения, определения продолжительности операций опережающего чтения и изменения таких вещей, как приоритет планирования процесса, планировщик ввода-вывода и приоритет планирования ввода-вывода. Комментарии Mincore используется для сбора информации о блоках файла, находящихся в памяти. Вы передаете ему список файлов, и он выводит список блоков. Используйте параметры -r, чтобы указать, что вывод должен быть в формате treadhead. Treadahead используется для чтения файлов и частей файлов в память. Вы можете указать области для чтения в командной строке или в файле /readahead_list.txt Каждая строка в файле readahead_list.txt указывает файл для чтения с синтаксисом: <имя_файла>[список_областей] area_list: <смещение>:<длина>[,<смещение>:<длина>] Если area_list пуст, то впереди читается весь файл. Вот пример: /система/фреймворк/фреймворк-res.apk /system/app/Contacts.apk 0:4096,1282048:4096,1294336:4096,1470464:12288 Это будет читать все в framework-res.apk и только определенные части Contacts.apk Чтобы создать необходимый файл данных, вам необходимо выполнить следующие шаги: - создать список файлов для сканирования - используйте mincore со списком файлов, чтобы создать список блоков для упреждающего чтения - используйте treadahead в /init.rc для опережающего чтения блоков Для тестирования вы можете удалить блоки из кэша страниц ядра. Вы можете сделать это с помощью: $ эхо 1 >/proc/sys/vm/drop_caches Вы можете повторить «1», «2» или «3» для drop_caches. '1' сбрасывает кэш страниц, '2' сбрасывает dentries и inodes, а '3' сбрасывает оба) В sreadahead список файлов определяется путем проверки данных трассировки файлов, открываемых во время загрузки. Для раннего тестирования treadhead используются файлы, которые потребляют много времени загрузки, из-за инструментирования процесса zygote во время предварительной загрузки его класса (а также сканирования пакетов во время инициализации диспетчера приложений). Использование Чтобы создать список файлов (для /readahead_files.txt), загрузите систему, затем вскоре после запуска системы выполните: # find . -name "*.apk" | xargs mincore Поместите имена файлов со значительными блоками в кэше в /readahead_files.txt Чтобы создать черный список, снова перезагрузитесь и выполните: # cat /readahead_files.txt | xargs mincore -r >/readahead_list.txt Чтобы запустить систему с включенным упреждающим чтением, добавьте эти строки в /init.rc service treadahead /system/bin/treadahead -e -f oneshot '-e' переводит treadahead в фоновый режим, '-f' указывает treadahead читать список файлов и блоков из файла /readahead_files.txt Тестирование скорости загрузки на Android Чтобы увидеть скорость загрузки (и влияние упреждающего чтения), прочтите журналы 'events' и 'main' Возьмите журнал событий с помощью: $ adb logcat -b события -d >eventlog1.txt Возьмите основной журнал с помощью: $ adb logcat -d > mainlog1.txt Найдите метки времени предварительной загрузки класса с помощью: $ grep boot eventlog1.txt Найдите общее время начала с помощью: $ grep enable_screen eventlog1.txt Найдите продолжительность предварительной загрузки класса с помощью: $ grep предварительно загружен mainlog1.txt Найдите время для сканирования пакетов с помощью: $ grep Time mainlog1.txt Вы можете сравнить результаты разных прогонов, используя подстановочные знаки оболочки: $ grep enable_screen * или $ grep Time * |