UNIXOIDдаст выигрыш, при меньших объемах он только помешает. Пакетpreload можно найти в составе любого современного дистрибутива,поэтому для его установки достаточно использовать стандартныйменеджер пакетов:$ sudo apt-get install preloadДалее следует отредактировать конфигурационный файл /etc/preload.conf. Демон вполне сносно работает и при стандартных настройках,однако каждый из нас индивидуален и использует систему по-своему,поэтому, вероятно, ты захочешь подогнать preload под себя. Перечислюосновные опции в секции model:• cycle — частота обращений к системе для сбора статистики. Значениепо умолчанию — 20 секунд. В большинстве случаев изменять его неимеет смысла, однако если ты чувствуешь, что preload вредит производительностисистемы, увеличь значение.• halflife — задает интервал, по истечению которого preload будетзабывать накопленную статистику на 50%. Значение по умолчанию —168 часов (неделя). Рекомендуется уменьшить значение тем, кто частоменяет софт, и увеличить тем, кто может месяцами/годами пользоватьсяодним и тем же набором приложений.• minsize — минимальный размер объекта (программы, библиотеки),обрабатываемого preload. Значение по умолчанию — 2 000 000байт (около 2 Мб), поэтому preload не будет выполнять предварительнуюзагрузку файлов меньшего размера. Нет особой нуждыменять это значение, однако если тебе кажется, что памяти будетдостаточно и для кэширования более мелких приложений — уменьшизначение.• memtotal, memfree, memcached — эти три опции взаимосвязаны иуказывают на потребляемый preload объем памяти. Для расчетов используетсяследующая формула: (общее количество памяти х memtotal) +(память, доступная при старте х memfree) + (кэш х memcached).Секция system также содержит три интересных для нас опции:• mapprefix — список каталогов, файлы которых должны быть предварительнозагружены (имей в виду, что это не только бинарники и библиотеки,но и другие типы файлов).• exeprefix — список каталогов с бинарными файлами.• sortstrategy — способ оптимизации операций ввода-вывода. Значение поумолчанию — 3 (оптимизация для жестких дисков). Для твердотельных дисковлучше всего подойдет значение 1, для сетевых файловых систем — 2.На этом все, можешь перезагрузить preload:$ sudo /etc/init.d/preload reloadСокращение скорости запуска при использованииPreloadперезагрузи систему, во время загрузки нажми для входа в менюзагрузчика, далее нажми и добавь в конец списка параметров ядраслово profile. Нажми для загрузки. Инициализация системы в режимепрофилирования займет время, поэтому будь готов потерпеть.ЗАМОРОЗКА ПРОЦЕССА ИЛИ CRYOPIDИногда лучший способ ускорить запуск приложения — просто не останавливатьего. Для многих юниксоидов работающие сутками напролетбраузер, почтовый и jabber-клиенты — обычное дело. Такие приложенияпросто нет смысла завершать, они могут понадобиться в любую минуту.Так почему бы не развить эту идею дальше и не сделать так, чтобы вместоостановки процессов их состояние можно было бы заморозить, а позже— восстановить, избавив программу от необходимости каждый разпроизводить сложную и трудоемкую инициализацию внутреннего состояния?Не мы первые, не мы последние. CryoPID — простое приложениедля заморозки процессов и последующего их восстановления. Прога нетребует прав root или модификации ядра, работает на архитектурах x86и amd64 и, что самое главное, не привязывает замороженный процесс кконкретной машине. После заморозки процесс превращается во что-товроде самораспаковывающегося архива, ты легко можешь перенестиего на другую машину и просто запустить. Пакет CryoPID есть далеко не вкаждом дистрибутиве, поэтому его придется установить самостоятельно:Как и любой другой демон, preload ведет логи, которые ты сможешьнайти в файле /val/log/preload.log. Информация о текущем состоянииpreload и его кэше доступна в файле /var/lib/preload/preload.state.ПРЕДВАРИТЕЛЬНОЕЧТЕНИЕ ИЛИ READAHEADUbuntu, а также некоторые другие современные дистрибутивы Linux,используют систему readahead во время инициализации системы. Как идемон preload, readahead заранее загружает необходимые компонентыприложений в оперативную память с целью ускорить их запуск. Разницазаключается лишь в том, что readahead частично работает внутри ядраLinux и оптимизирован специально для ускорения процесса инициализациисистемы.Система использует утилиту /sbin/readahead-list, которая читает файлы/etc/readahead/boot и /etc/readahead/desktop и загружает перечисленныев них файлы во время инициализации системы. Эта простая и эффективнаясхема, которая, однако, имеет и очевидные недостатки. Делов том, что любая стандартная установка Ubuntu со временем претерпеваетизменения в количестве установленных и загружаемых во времястарта ОС сервисов. Списки файлов в этом случае становятся неактуальнымии требуют обновления. Параметр ядра profile позволяет перестроитьсписки предварительно загружаемых файлов. Для его включения096$ cd /tmp$ wget http://dagobah.ucc.asn.au/wacky/cryopid-0.5.9.1-i386.tar.gz$ tar -xzf cryopid-0.5.9.1-i386.tar.gz$ cd cryopid-0.5.9.1/src$ make$ mkdir ~/bin$ cp freeze ~/binПосле этого можно запустить программу следующим образом:$ ~/bin/freeze èìÿ-ôàéëà pid-ïîöåññàК сожалению, CryoPID имеет несколько проблем, включая неполнуюподдержку сокетов и X-приложений, а также генерирует мусор в спискепроцессов вместо имени восстановленной программы.ШУСТРАЯ ЗАГРУЗКА UBUNTUUbuntu быстра, на самом деле быстра. Скорость загрузки этого дистрибутиваоставляет далеко позади многие другие линуксы и заставляет завидоватьпоклонников BSD-систем. Однако нет пределов совершенст ву, ив этом разделе мы попробуем ускорить ускоренное.XÀÊÅÐ 08 /139/ 10
Оптимизируем работу OpenOffice.orgОкно управления сервисами в Ubuntu1. Отключи таймаут в grub. По умолчанию загрузчик ждет 3 секунды,чтобы пользователь смог изменить параметры загрузки. Открой файл/boot/grub/menu.lst, найди строку «timeout=3» и замени 3 на 0.2. Отключи splash. Ubuntu splash-screen, показываемый во времязагрузки системы, малоинформативен и требует время на свою загрузку.Поэтому открываем все тот же /boot/grub/menu.lst и убираем опции«quiet» и «splash» из параметров загрузки ядра.3. Отключи IPv6. Раньше поддержка пока ненужного протокола IPv6в Linux была реализована в виде загружаемого модуля, поэтому дляее отключения требовалось лишь слегка отредактировать файл /etc/modprobe.d/aliases. Сегодня IPv6 вшит прямо в ядро, поэтому для егоотключения ядру должен быть передан параметр «ipv6.disable=1». Сделатьэто можно, отредактировав файл /boot/grub/menu.lst.4. Отключи проверку на выход из спящего режима. Во время своейзагрузки ядро выполняет проверку, выходит ли комп из спящего режима(suspend) или выполняет обыкновенную загрузку. Занимает эта процедуравсего одну секунду, однако ее тоже можно сэкономить, добавивопцию «noresume» к параметрам загрузки ядра. Естественно, владельцамноутбуков этого делать не стоит.5. Оптимизируй initramfs. Образ RAM-диска используется для хранениянизкоуровневых компонентов ОС, которые должны быть доступныеще до монтирования корневой файловой системы. По умолчанию этотобраз содержит всевозможные компоненты, подобранные на все случаижизни. Без них образ грузится в память быстрее, что способст вуетсокращению общего времени загрузки системы. Открываем файл/etc/initramfs-tools/initramfs.conf, находим строку «MODULES=most» изаменяем ее на «MODULES=dep». Далее пересобираем все доступныеобразы только с необходимыми компонентами:$ sudo update-initramfs -k all -uПосле обновления ядра образы будут сгенерированы автоматически.6. Отключи ненужные сервисы. По умолчанию в Ubuntu активированомножество фоновых сервисов на все случаи жизни. Вряд ли тебе нужныони все, поэтому идем отключать. Открываем System Administration Services и видим список сервисов. Выбор кандидатов на отключениезависит от конкретной ситуации, но в большинстве случаев безболезненноможно пожертвовать следующим:• Bluetooth Manager — ìåíåäæåð óñòðîéñòâ Bluetooth• Check for new hardware drivers — ïðîâåðêà íîâûõ âåðñèéïðîïðèåòàðíûõ äðàéâåðîâ• Evolution Alarm Notifier — ñèãíàëèçàòîð ïðèõîäà ïî÷òûâ Evolution• Print Queue Applet — àïïëåò î÷åðåäè ïå÷àòè• Tracker — ñëóæáà ïîèñêà è èíäåêñèðîâàíèÿ7. Отключи автостарт ненужных приложений. Во время входа всистему происходит автозапуск большого количества различныхприложений (в основном это апплеты). Не все они нужны,поэтому открой System Preferences Applications startupи удали все, что считаешь ненужным (например, апплетbluetooth). Запуск оставшихся приложений можно немногооптимизировать с помощью следующего трюка: отредактируйстроку запуска каждого из них так, чтобы она приняла примернотакой вид:sh -c "sleep 10; exec bluetooth-applet"sh -c "sleep 20; exec /usr/lib/evolution/2.28/evolution-alarm-notify"Для каждого следующего приложения число должно увеличиваться на10. Так ты сделаешь загрузку DE более равномерной.УСКОРЯЕМ ЗАПУСК ТЯЖЕЛОВЕСОВМногие тяжеловесные приложения, используемые нами повседневно,слишком медлительны и неповоротливы. Нередко на их запуск уходитбольше минуты, что довольно сильно раздражает и мешает сконцентрироватьсяна работе. Попробуем это исправить.• OpenOffice.org. Этот офисный пакет рекордсмен по потреблениюресурсов и неповоротливости, поэтому его оптимизации необходимоуделить особое внимание. Открываем Tools Options, переходимк подразделу «Memory». Устанавливаем значение «Number ofsteps» равным 20, это уменьшит размер истории отмены. В секции«Graphics cache» устанавливаем значение «Use for OpenOffice.org» в 128, «Memory per object» — в 20. В подсекции «Java» убираемгалочку с опции «Use a Java runtime environment». Оптимизацияпозволяет поднять скорость запуска и время реакции.• Firefox. Огнелис — вторая по уровню прожорливости и тормознутостипрограмма. Начиненная достаточно большим количеством плагинов,она превращается из огненной лисы в замороженную черепаху, но естьдва пути ускорить ее запуск. Первый — удалить все ненужные и редкоиспользуемые плагины. Это поднимет и скорость запуска, и производительность.Второй — оптимизировать базу sqlite, используемую дляхранения данных профиля:$ find ~/.mozilla/firefox/ -name *.sqlite \-exec sqlite3 {} VACUUM \;Делать это необходимо регулярно (например, раз в неделю), так какбазы постоянно растут и захламляются.zXÀÊÅÐ 08 /139/ 10 097