LXF113-113:Спецрепортаж3

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

Изгнание демонов

Они спокойны, ненавязчивы и работают на вашем компьютере в фоновом режиме. Грэм Моррисон улегся на кушетку психиатра, чтобы избавиться от некоторых из них.

Как и в случае с другими компонентами ранней ОС Unix, термин «демон» мало что говорит о его функциях. Способен ли демон исподтишка кольнуть пользователя трехзубой вилкой? А может, демоны знаменуют тесное родство компьютера и вашей души? Правда, как и большинство вещей, взятых из Unix, куда более скучна и лишена налета мистики. Мистикой отдают только попытки узнать, что они все-таки делают.

Демон – это задача, выполняющаяся в фоновом режиме, и при запуске машины стартует целая маленькая армия таковых. Бывают демоны управления автоматизированными задачами, демоны для управления питанием и параметрами CPU, демоны для печати и демоны для ведения системных журналов. Некоторые выдают свое происхождение, прибавляя к именам букву «d», другие предпочитают названия-ребусы навроде «binfmpt-support» или «brltty». Демоны, несомненно, неотъемлемая частью рабочего окружения. Но есть с ними и проблема. Без божественного озарения обычному дистрибутиву Linux в точности не угадать, какие демоны вам пригодятся, а какие нет – в результате все они норовят перестраховаться, вплоть до курьезов. Например, ваш настольный компьютер может заиметь демона управления питанием ноутбука или демона Bluetooth; трудоустройство обоим не светит [странная фраза, конечно имеется ввиду? что трудоустройство не светит если Вы не хотите управлять питанием и не собираетесь подключать адаптер bluetooth], но они будут загружаться и поедать ценную память. Время загрузки и расход памяти можно уменьшить, немного поработав над отсечкой ваших демонов и их подгонкой под свои требования. Весь фокус в том, что именно нужно удалять. [Гораздо более важно не освободившаяся память, тем более что чаще всего цифра весьма небольшая, а сократившееся время загрузки. Вот за это стоит побороться.]

Говоря о демонах, большинство подразумевает сервисы. Часто они стартуют при загрузке и скромно выполняются в фоновом режиме – но это не обязательно легковесные средства управления системой. Нет причин не считать демонами и полные пакеты приложений. Какие сервисы выполнять, а какие – нет, целиком зависит от вашего дистрибутива и целей его применения. Если вы используете дистрибутив, ориентированный на серверное применение, то весьма вероятно, что в числе демонов будет web-сервер Apache вместе со своей школой приложений-помощников. Это беспардонный побор ваших ресурсов, если web-сервер вам ни к чему, а ведь еще не так давно дистрибутивы типа Mandriva устанавливали и запускали web-сервер по умолчанию. В наши кризисные времена, скорее всего, такого не происходит, но весьма вероятно, что у вас все еще остается что-нибудь ненужное, «крутящееся» в фоновом режиме.

Список потенциальных нарушителей

Есть много способов узнать, какие сервисы выполняются в вашей системе, но самый ясный из них – прибегнуть к команде под названием chkconfig. Может потребоваться установить ее вручную через ваш менеджер пакетов, но, будучи запущенной в командной строке, она создаст список выполняющихся сервисов и выдаст его в терминал. Запуск программы на Ubuntu по умолчанию дал нам 93 различных задачи, а на OpenSUSE 11 – только 83. Первым делом вы отметите, что точное определение, чем занимается та или иная служба, весьма затруднено. Вот что было вверху списка вывода chkconfig на машине с Ubuntu:

 acpi-support                    2345
 acpid                           2345
 alsa-utils                      off
 anacron                         2345
 apmd                             on

Слева стоят названия сервисов, а справа от каждого из них находится описание уровня его запуска (runlevel). Linux, как и Unix, использует различные уровни запуска для разных сервисов. Например, уровень запуска 1 обычно используется для аварийной загрузки в режиме однопользовательской системы. Это значит, что в нем нет сети и, конечно, никакого графического рабочего стола.

Пример выше показывает, что демон anacron, отвечающий за выполнение задач в назначенное время, будет запущен, когда система загружается на уровнях 2, 3, 4 и 5. Проблема с уровнями запуска состоит в отсутствии стандарта для разных дистрибутивов. Для всех дистрибутивов одинаковы только уровни 0 и 6, используемые соответственно для остановки и перезагрузки компьютера. В Gentoo уровень запуска 3 – это полное многопользовательское окружение с рабочим столом. В Slackware ему отвечает уровень 4, а в Ubuntu, Fedora и OpenSUSE – уровень 5.

При желании переключиться из текущей сессии в другой уровень запуска, пользуйтесь командой telinit, указав ей номер уровня, на который вы хотите попасть. Неплохо, например, попробовать уровень 3: в большинстве дистрибутивов это даст вам представление о потенциальной скорости и доступной памяти, которых можно достичь, избавившись от сервисов, не требуемых вашей системе. Однако не следует ожидать, что наши инструкции по удалению сервисов с какого-нибудь уровня запуска будут обязательно применимы к вашему дистрибутиву.

ДЕМОНстрация

Но прежде чем погружаться в поиски того, какие сервисы можно спокойно убрать, следует убедиться, что мы сможем вернуться к исходной рабочей конфигурации. К счастью, chkconfig, наряду с проверкой, какие сервисы работают на данных уровнях запуска, также умеет сохранять их текущую конфигурацию. Просто введите chkconfig -A > services.save. Это перенаправит вывод команды chkconfig в файл с именем services.save, и взглянув на него в текстовом редакторе, вы увидите, что он содержит в точности то же, что и вывод стандартной команды. Это хорошее решение, если вам не упомнить, какие сервисы выполнялись до перестройки вашей системы: просто загрузите файл и посмотрите. Как легко предположить, команда chkconfig может также запускать и останавливать сервисы, а также изменять связанные с ними уровни запуска. Команда chkconfig sshd off останавливает демон сервера SSH, а ввод chkconfig sshd --level 23 off обеспечивает отмену выполнения SSH, когда система работает на уровнях 2 и 3.

Эти изменения вступят в силу только после перезагрузки системы – даже если вы просто отключили сервис. Но самое лучшее в chkconfig то, что даже полностью исковеркав конфигурацию ваших сервисов, вы всегда можете направить содержимое заветного файла обратно в chkconfig, и исходная подборка будет восстановлена. Просто введите chkconfig -s < services.save.

Окно настройки сервисов Ubuntu выдает список задач, которые можно безопасно удалять, если вы умеете обходиться без них.

Хотя chkconfig является четким и быстрым способом просмотра списка ваших демонов и сохранения их конфигурации, мы не советуем использовать ее для включения и выключения сервисов. Есть графические утилиты, подходящие для этой задачи куда больше. В Ubuntu есть даже окно редактирования основных сервисов – его можно открыть через меню System > Administration [Система > Администрирование]. Но мы рекомендуем вам программу под названием Boot-Up Manager (или сокращенно «bum»). Доступны пакеты для Ubuntu, и это именно тот подход, который использует для управления сервисами Yast в OpenSUSE. Найдите System Services [Системные сервисы] в разделе Services [Сервисы]. В режиме Эксперта Boot-Up Manager выводит всех демонов, доступных в вашей системе, включая и тех, которые сейчас не запущены, и позволяет вам выбрать, какой демон будет работать и на каком уровне запуска.

Теперь мы готовы к следующему шагу – определению, что делают различные сервисы и какие из них можно безболезненно удалить. Как уже обсуждалось, номер и тип сервиса зависят от используемого вами дистрибутива. В некоторых их больше, в некоторых (Ubuntu) – меньше, но мы расскажем о наиболее вероятных кандидатах на удаление в большинстве дистрибутивов Linux. Желательно отключать их по одному и удостоверяться, что изменение не приводит к дурным последствиям.

Окно настройки сервисов Ubuntu выдает список задач, которые можно безопасно удалять, если вы умеете обходиться без них.

Cron, Anacron и atd

Вероятная нужность демона: 3/5
(чем больше число, тем вероятнее неприятности без него)
На самом деле эта оценка скорее указывает необходимость демона для системы и приложений, чем больше цифра тем больше вероятность, что при отключении демона что-то перестанет работать, если же цифра мала, то решение использовать или не использовать демон приходится целиком на усмотрение пользователя.

Если вы хоть раз пользовались Cron для запуска определенных задач в нужное время, вы точно знаете, за что отвечает этот демон. Он терпеливо ждет в фоновом режиме конкретной даты и времени, чтобы исправно выполнить команду, прописанную в его файле конфигурации. Узнать, что делает Cron, можно, взглянув на содержимое файла /etc/crontab, и если в вашей системе эти команды не требуются, смело ликвидируйте Cron. Близкий родственник Cron’а – Anacron. Его можно обнаружить в Ubuntu, но не в OpenSUSE 11. Разница между Cron и Anacron состоит в том, что Anacron гарантирует выполнение задачи, даже если система не работала в нужное время: например, резервирование, назначенное на вчера, выполнится при включении машины. Поэтому Anacron часто используется для системных задач. В той же компании – демон atd, управляющий планированием задач для команды at. Обычно это не повторяющаяся команда, которая запускается в определенное время.

AppArmor

Вероятная нужность демона: 3/5

И Ubuntu, и OpenSUSE используют AppArmor для повышения безопасности. Он останавливает скомпрометированное приложение, способное причинить вред всей системе. Это определенно хорошая штука. Но если вы точно знаете, что вашей системе ничто не угрожает – например, если она не подключена к сети – смысла запускать AppArmor крайне мало, и этого демона можно отключить. В иных случаях мы рекомендуем оставить его на месте.

Apport

Вероятная нужность демона: 2/5

В Ubuntu это фоновый сервис, докладывающий о сбоях. Наверно, вы видели, как он действует, когда ваше приложение «падало»: именно apport отвечает за появление окна, где рассказывается, что произошло, и спрашивается, не хотите ли вы доложить о неисправности команде Ubuntu. Это очень полезно для разработчиков Ubuntu, так как позволяет им получать отчеты от огромной установочной базы, где их дистрибутив используется во всевозможных окружениях. Apport не дает пользователю немедленного эффекта, но если все его отключат, то скорость, с которой разработчики станут добавлять исправления и повышать стабильность, заметно упадет.

Avahi-daemon

Вероятная нужность демона: 1/5

Avahi обеспечивает автоматическое обнаружение различных сетевых служб. Теоретически, Avahi должен быть очень полезен пользователям ноутбуков, так как упрощает определение таких сервисов, как печать и совместное использование файлов – да только бывает такое редко. А для пользователей настольных машин он и того бесполезнее, ведь очень маловероятно, что здесь регулярно будет меняться сеть.

Bluetooth

Вероятная нужность демона: 1/5

Если ваш компьютер не снабжен устройством Bluetooth, то и демон bluetooth вам не нужен. Его единственная работа состоит в ожидании подключения удаленных устройств Bluetooth, и передаче этих соединений всем работающим утилитам управления Bluetooth, например, тем, что есть под KDE и Gnome. Хотя Bluetooth обычно есть на портативных устройствах и ноутбуках, на настольных машинах он сравнительно редок. Поэтому очень легко сообразить, нужен вам этот демон или нет.

CUPS

Вероятная нужность демона: 2/5

CUPS – это демон печати. Он управляет заданиями печати от различных приложений и посылает их на принтер. Понятно, что если у вас нет принтера, то и без CUPS можно обойтись.

GPM

Вероятная нужность демона: 1/5

Этот демон всего лишь добавляет поддержку мыши в консоли. Если вы проводите весь день в графическом окружении, вам вряд ли понадобится это средство. Пригодиться оно может разве что при необходимости работать на более низком уровне запуска. Следовательно, есть смысл включить этого демона для уровней запуска 1 и 2, но никак не 3 и 4.

KLogd

Вероятная нужность демона: 3/5

KLog – процесс, ведущий журналы ядра. Журналы – неотъемлемая часть любой системы, особенно если она служит в качестве какого-либо сервера. Но спросите себя, давно ли вы смотрели эти журналы на настольной машине. Если ваш ответ «да в общем-то ни разу», то отключив этого демона, вы ничего не потеряете. С другой стороны, при возникновении проблем без логов может оказаться весьма трудно разобраться в причинах даже специалисту.

NTP

Вероятная нужность демона: 4/5

Network Time Protocol синхронизирует ваши локальные часы с датой и временем на нескольких удаленных машинах. Это прекрасный способ держать точное время на своем компьютере, и NTP будет автоматически переводить ваш компьютер на летнее время. Здесь оценка нужности демона явно завышена так как он сработает только в том случае если у Вас имеется доступ в интернет на момент загрузки компьютера (фактические если у Вас имеется кабельное подключение), кроме того синхронизацию часов можно выполнить и после загруки от имени root команду sntp -P no -r pool.ntp.org, адрес сервера, естественно, можно указать свой

Powersaved, Powernowd и Laptop-mode

Вероятная нужность демона: 4/5

Первые два демона отвечают за уменьшение тактовой частоты вашего CPU, когда он не используется. Они полезны для пользователей ноутбуков, так как продлевают время работы от батареи. Но если вы гонитесь за производительностью, то они не нужны, также как и если ваш CPU не умеет управлять своей частотой. Laptop-mode выполняет подобные функции для жесткого диска и также продлевает время работы от батарей. Он не является демоном в полном смысле этого слова, и отключив его, вы не сбережете много ресурсов. Однако, остерегайтесь запускать его на настольном ПК – можете быстро вывести из строя жесткий диск.

Фоновые процессы

Не только сервисы работают в вашей системе анонимно. Чтобы увидеть список запущенных процессов, просто введите ps aux или воспользуйтесь программой System Monitor для вашего рабочего стола. Вы увидите обычных подозреваемых, работающих с правами root, и их количество может вас удивить. Эти задачи запускаются при старте рабочего стола, и многие из них являются его частью. Наша стандартная установка Ubuntu под Gnome выдала 36 таких процессов, тогда как в OpenSUSE под тем же рабочем столом их оказалось 33. Многие из них поддерживают такие вещи, как рабочий стол Gnome, звук, файловый менеджер Nautilus, но среди них есть и необязательные. Например, зачем держать монитор томов GPhoto, не пользуясь GPhoto? Быстрая проверка Mandriva выявила 38 похожих процессов, и хотя многие из них находятся в спящем режиме, они все же потребляют память. Для среднего пользователя с 2 ГБ ОЗУ это, может, и мелочь, но если вы захотите поставить OpenSUSE или Ubuntu на более старую машину, эффект будет ощутимым.

Один из способов борьбы с такими процессами – уничтожить их либо из System Monitor, либо командой kill. Однако в Gnome имеется отличная программа Session Manager, где можно указать, какие процессы запускать при входе в систему. Что-то испортив, всегда можно включить эту задачу заново и попробовать еще раз. Еще один способ – заменить процесс чем-нибудь более эффективным и даже более функциональным. Tracker, средство поиска в Ubuntu по умолчанию, выполняет индексирование слишком медленно, и его результаты не всегда лучшие.

С другой стороны, Beagle – полноценная замена для Tracker. Он делает работу лучше, и хотя требует больше памяти, зато он и полезнее (наверное, именно поэтому он используется в OpenSUSE 11). А главное в задаче изгнания демонов – это избавиться от ненужного балласта, чтобы освободить место под то, что вам действительно необходимо. LXF

Проверка производительности

Преобразовывать систему, конечно, прекрасно, но иногда сложно понять, достигнут ли желаемый эффект. Один из способов разобраться в этом состоит в просмотре потребления памяти и загрузки процессора. Состояние системы можно проверить, запуская в командной строке top и сравнивая результаты до и после, но это не научный подход. Куда круче пользоваться утилитой monit, которая отслеживает изменения в системе во времени, а также самостоятельно запускает и останавливает сервисы.

Мы пошли более простым путем: взяли утилиту под названием Boot Chart. Она устанавливатся большинством менеджеров пакетов и запускается как демон с момента начала загрузки системы и до конца ее загрузки. Boot Chart анализирует системные ресурсы и рисует красивые графики их использования во время загрузки. По ним хорошо видно, на что уходит ваша память, кто заполняет буфер чтения диска и где следует сделать улучшения. При каждой загрузке графики оформляются как изображение и сохраняются как стандартные графические файлы PNG в каталоге /var/log/bootchart. Мы создали графики во время двух загрузок стандартной установки Ubuntu 8.10. Первому соответствовал стандартный набор запущенных сервисов, а для второго мы убрали все сервисы, упоминаемые в основном тексте статьи. Boot Chart показал меньшее использование ресурсов и сокращение времени загрузки примерно на 20 %.

Изображение:LXF113_42_2.jpg

  • Мы использовали Boot Chart для оценки влияния удаления сервисов на время загрузки.

Шаг за шагом: Освобождаем 60 МБ памяти в Ubuntu

Шаг 1

  • 1 Обозначьте стартовую точку
    Сперва мы получили данные о доступной памяти от утилиты System Monitor из System > Administration. Запомните это значение и переходите к следующему шагу.


Шаг 2

  • 2 Удалите ненужные задачи
    Используя окно Session Preferences, которое можно открыть, выбрав Session в меню System > Preferences, удалите столько задач, сколько сможете. Мы убрали все, кроме менеджера окон.

Шаг 3

  • 3 Перезапустите рабочий стол
    Выйдите и зайдите в систему снова, запустите System Monitor. У нас получилась экономия памяти более 60 МБ, то есть 12 %. Осталось найти золотую середину между функциональностью и производительностью.
Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию