LINUX.ORG.RU

Есть ли императивный аналог preload?

 , , ,


0

2

Для тех кто в танке, preload это линуксовский аналог SuperFetch из КабыСдоха. Суть в том, что программа пытается найти паттерны в запуске программ/библиотек и потом заранее загружать программы/библиотеки в память.

Например она может установить, что пользователь практически постоянно первым делом запускает браузер, следовательно его надо заранее загружать после запуска иксов. Или например, что если пользователь запускает эмулятор терминала, то с вероятностью 25% он запустит Synaptic, следовательно если есть ещё свободная память, надо заранее загрузить Synaptic. Или например, что пользователь по воскресениям вместо браузера первым делом запускает Скайп, следовательно по воскресениям надо заранее загружать Скайп. Или например, что пользователь ближе к вечеру запускает VLC, следовательно надо заранее загрузить VLC незадолго до вечера. И т.д. Думаю мысль понятна.

Возникла мысль об том, а нельзя ли реализовать что-то подобное императивно. Поясню что я имею в виду под «императивно». Данная программа используя технологии машинного обучения пытается предсказать поведение пользователя. И как всякое предсказание промахи неизбежны. Так может вместо того, чтобы делать предсказания, строить модели поведения и заниматься прочими высокоинтеллектуальными вычислениями, лучше прямо узнать от самого пользователя об его паттернах?

Скажем пользователь мог бы записать в специальном файле настроек паттерны своего поведения, вроде «В такое время таких дней я использую такие-то программы» и «если запущена программа А, то с вероятностью 50% в скором времени будет запущенна программа Б, за исключением суббот (тогда вероятность 99% и) и если только не запущенна программа В(тогда вероятнсть близка к нулю)», а потом демон заранее подзагружал бы в память программы и библиотеки в соответствуии с этим файлом.

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Ответ на: комментарий от arturpub

Не понял? Какой смысл в это команде?

Deleted
()

что ты выиграешь от предзагрузки?

практически во всех DE есть галочка «Сохранять сеанс», ставь и не парься.

anonymous
()

Такая программа как раз должна быть самостоятельной. Именно в самостоятельности её главная ценность. Хуже того — точность прогнозов, составленных человеком, будет ещё ниже, чем машина сама соберёт нужные данные. Ещё хуже — человек будет лениться или забывать вносить изменения в «императивный» конфиг. Машина не ленится и не забывает. Машина всегда адаптируется.
Твоя идея не взлетит.

Stahl ★★☆
()
Ответ на: комментарий от anonymous

Галочка «Сохранить сеанс» поможет только при начале работы. При нужде в более сложных предзагрузках она уже не проканает.

Deleted
()
Ответ на: комментарий от Stahl

Хуже того — точность прогнозов, составленных человеком, будет ещё ниже, чем машина сама соберёт нужные данные.

Да, точность будет хуже. Аналогия: Я вот число Пи знаю только с точностью до двух знаков после запятой, а для компьютера и 100 000 знаков после запятой ещё не предел. Но для моих нужд мне и этой точности хватает. Сверхточность необязательно даёт преимущество.

У компьютера нету контекста, для него предзагрузка это чисто математическая задача. Поэтому некие его оптимизации будучи безупречны математически с практической точки зрения будут иметь нулевой смысл. И наоборот, до некоторых оптимизаций он может просто недодуматься ибо его модель недостаточно сложна.

Ещё хуже — человек будет лениться или забывать вносить изменения в «императивный» конфиг.

Только вот где гарантия что частые изменения которые вносит программа будут такими же толковыми как изменения которые изредка вносит человек? Возможно большинство вносимых ею изменений будут носить лишь косметический эффект, не затрагивая ничего по существу. Возможно даже после установки нашего оптимизатора ничего не изменится, а мысли юзера об том что программы стали теперь заметно быстрей открываться - эффект плацебо.

Из этой ситуации есть два выхода: переход на чисто ручной контроль или переодический просмотр базы данных оптимизатора, дабы собственноручно убедиться что он всё правильно делает. Теоретически сторонник автоматической оптимизации может форкнуть оптимизатор в целях тюнинга используемых алгоритмов под его конкретную систему при неудовлетворительных результатах(в случае если алгоритмы создают либо слишком простую либо слишком сложную модель).

Возможно наилучшим решением была бы гибридная система, позволяющая сочетать элементы ручной и автоматической оптимизации. Скажем юзер задает что надо 24/7 держать в памяти Google Chrome, а оптимизатор смотрит за тем, чтобы также подгружать все испольуемые Хромом библиотеки. Перейти на новый браузер юзер может ой как нескоро, в то время как список наиболее используемых браузером библиотек может меняться в результате апдейтов (как ОС, так и самого браузера), установки расширений, изменения настроек, изменений посещяемых сайтов и т.д.

Но это всё теория. С чисто прагматической точки зрения у меня ещё недостаточно навыков чтобы лазить в базу preloader либо создавать свой собственный предзагрузчик. Либо я должен переодически производить тесты на скорость запуска приложений с включенным/выключенным preloader, либо создать свой bash-скрипт который потом превратить в демона, и в который я буду переодически вносить изменения. Собственно я хотел бы написать скрипт. Но увы, мне нехватает главного компонента, мне нужна программа которая по моей команде загружала бы в память библиотеку/программу без её(библиотеки/программы) запуска.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от devl547

Да я бы рад написать, но только как мне в этом скрипте организовать загрузку программ и их компонентов в память без непосредственного их запуска?

Deleted
()

Для тех кто в танке, preload это линуксовский аналог

только в танке получается не те
man systemd короче

amorpher ★★★★★
()
Ответ на: комментарий от Deleted

А скриптом ты отслеживай запуск программ, анализируй частоту, возьми ldd и натрави на бинарники => PROFIT, ты соберешь список нужных библиотек для прелоада.

https://forums.gentoo.org/viewtopic-t-622085-highlight-preload.html

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

скриптом ты отслеживай запуск программ, анализируй частоту, возьми ldd и натрави на бинарники => PROFIT, ты соберешь список нужных библиотек для прелоада.

Я так и делал. А потом busybox readahead $FILENAME

devl547 ★★★★★
()
Ответ на: комментарий от devl547

Debian Sid. У меня пишет «readahead: applet not found».

Это во-первых. А во-вторых, даже если мы предзагрузку сделаем, как нам потом проверить что предзагруженный код всё ещё в памяти ?

Deleted
()
Ответ на: комментарий от arturpub

Лучше уж cat `qlist --exact vlc` > /dev/null.

А то мало ли что локейт найдёт.

Да и у vlc зависимости есть, а статически его вроде как не соберёшь.

batekman ★★★
()

Возьми да разберись. Никто если не ты.

Я только боюсь, что пока такое ПО будет разрабатываться, даже я успею себе SSD купить.

batekman ★★★
()
Ответ на: комментарий от Deleted

readahead: applet not found

BusyBox пересобрать надо. Или лучше просто cat file > /dev/null, как уже советовали.

batekman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.