Статьи

Как работает графика в операционных системах семейства Linux

При использовании домашнего или офисного компьютера под управлением Linux-системы часто хочется получить от него максимальную отдачу, повысив производительность. Это особенно важно для тех компьютеров, которые одновременно используются для майнинга. Чтобы увеличить производительность системы, нужно устанавливать более мощные компоненты, отвечающие за проведение вычислений, а также уменьшать нагрузку за счет отключения/уменьшения нагрузки за счет ненужных и второстепенных приложений/служб.

Одним из элементов, потребляющим значительную часть ресурсов компьютера, является его графическое окружение (если оно используется). В связи с этим стоит уделить внимание максимальному увеличению его быстродействия, которое прямо связано с количеством задействованных для его работы служб и приложений. Для этого нужно хорошо понимать,как работает отображение графики в операционной системе — дистрибутиве Linux.

Программные компоненты, обеспечивающие работу графического окружения в Linux

Для работы с графическим окружением компьютера под управлением linux, используется модульный принцип совместного использования программ, что дает пользователю гибкость в выборе компонентов и их настройке. Для обеспечения функционирования графической среды (или DE, сокращение от Desktop Environment) в операционных системах семейства Linux обычно используется три основных компонента:

Компоненты графической системы linux (слайд с Youtube-канала AcademyOfNetworking):

Запуск графического окружения Linux производится с определенной последовательностью. Обычно сначала производится вход в систему с помощью дисплейного менеджера, затем запускается дисплейный сервер (Xorg), а потом — другие программы, обеспечивающие работу графического окружения — оконный менеджер и другие приложения.

Механизм функционирования графической системы в Linux на основе X-Window (источник: сайт itproffi):

Если отключить графическую оболочку (диспетчер дисплеев, оконный менеджер, сервер x), на компьютере можно будет работать только в консольном режиме — с помощью цифро-буквенных и символьных команд через 8 телетайпов (tty). Это освобождает ресурсы компьютера, увеличивает надёжность его работы, сводит до минимума трафик при дистанционном управлении (например, по ssh) и предоставляет массу других преимуществ при умелом использовании. В связи с этим консольный режим часто применяется на компьютерах объектов, требующих высокой надежности и быстродействия (сервера и компьютеры для майнинга, операционная система для майнинга HiveOS).

Работа дисплейного менеджера в операционных системах на основе ядра Linux

Основными задачами, которые выполняет дисплейный менеджер (менеджер доступа/экрана, диспетчер отображения), являются:

  • запуск окна приветствия (greeter) чтобы пользователь смог выбрать аккаунт и выбрать тип сессии, которую он желает использовать;
  • предоставление возможности выполнить аутентификацию (ввод логина для учетной записи и пароля) с помощью подключаемых модулей (PAM). Фактически это оконный аналог приглашения командной строки getty, которая используется в Linux при работе в консольном режиме;
  • запуск оконных процессов для сессии пользователя после прохождения им аутентификации (запуск сервера экрана и загрузка рабочего стола);
  • предоставление опций удаленного ввода логина и пароля.

Дисплейный менеджер создает интерфейс (кнопки и поля) для последующего запуска оконного менеджера, а также обеспечивает возможность выключения компьютера, выводит информацию о версии дистрибутива linux, текущем времени, предоставляет другие опции и возможности. Проще говоря, менеджер дисплеев — это контролер сеансов пользователя, проверяющий их на знание логина.

Исходя из задач, которые выполняет Display Manager, его основными качествами должны быть:

  • поддержка разных оконных менеджеров (рабочих столов) и технологий работы с дисплеями (например, X, Mir, Wayland и другие);
  • удобство и простота пользования;
  • малое количество потребляемых ресурсов;
  • предоставление возможности работы в гостевой сессии (при необходимости);
  • поддержка работы с удаленным подключением (например, по протоколу VNC, XDCMP и другими).

Существует множество менеджеров дисплея, одним из лучших является LightDM (сокращение от английского словосочетания Light Display Manager — легкий менеджер дисплея):

lightDM используется по умолчанию в качестве дисплейного менеджера в таких Linux-дистрибутивах, как Xubuntu, Ubuntu 11.10+, Kubuntu, Edubuntu, Fedora, Xubuntu, LinuxMint и других.

LightDM поддерживает работу с несколькими рабочими столами и многими надстройками (легко расширяем). Он работает на основе движка с открытым исходным кодом WebKit, поэтому отображает интерфейс входа в систему как HTML-страницу, что не требует много ресурсов. Развитие lightdm ведется усилиями сообщества на Github.

Окна приветствия (greeters) для LightDM разрабатываются на альтернативной основе. В xubuntu это приложение GTK+ Greeter, которое отличается скромными требованиями к потреблению ресурсов. Если в системе используется автоматический логин, то Greeter не нужен.

Установка LightDM (в случае его отсутствия в системе) производится командой:

sudo apt-get install lightdm

удаление производится командой:

sudo apt-get remove lightdm

Остановка работающего менеджера X с помощью lightdm делается командой

sudo /etc/init.d/lightdm stop

запуск lightdm производится командой

sudo /etc/init.d/lightdm start

Файлы конфигурации lightdm находятся в каталогах

/usr/share/lightdm/lightdm.conf.d/*.conf

/etc/lightdm/lightdm.conf.d/*.conf

/etc/lightdm/lightdm.conf

Менеджер lightdm поддерживает работу с оконными серверами X.Org и Mir.

В xubuntu он работает в паре с сервером X и оконным менеджером xfwm4.

Работа оконного менеджера в дистрибутивах Linux

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

Кроме тройки часто использющихся компонентов (дисплейный и оконный менеджер, сервер X), для работы в графическом окружении Linux используются дополнительные программы, обеспечивающие функционал рабочего стола, например, кнопки пуска (стартового меню), панели, виджетов, программного обеспечения, эмулятора терминала (xfce4-terminal), файловый менеджер и другие программы.

Как работает сервер X Window

Система X Window (X11 или просто X) предназначена для отображения базовой графики. Более продвинутые графические возможности для пользователя создаются приложениями графического окружения DE (в xubuntu это среда xfce4) .

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

X-Window отвечает за базовый функционал графической среды на низком уровне. Для работы графического окружения в Linux еще нужны оконный и дисплейный менеджеры плюс (при необходимости) другие программы.

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

Посмотреть, какие компоненты на компьютере связаны с сервером X можно командой

apt-cache search xorg

Установка xorg при его отсутствии делается командой

sudo apt-get install xorg

Конфигурирование сервера X в консольном окружении делается командой

sudo X -configure

В результате в директории /etc/X11/ появится конфигурационный файл xorg.conf.

В системе, уже работающей в графическом окружении, при попытке выполнить эту команду появится ошибка Fatal server error: (EE) Server is already active for display 0. If this server is no longer running, remove /tmp/.X0-lock and start again.

Запуск X-сервера делается командой

startx

По команде

xwininfo

можно вывести информацию об окне, с которым работает сервер X:

По команде

 xdpyinfo | less

можно посмотреть информацию о версии x-сервера,и его возможностям.

Если на компьютере, работающей в консольном режиме запустить сервер X, то уже можно ограниченно работать с оконными программами, использовать мышь и клавиатуру.

Для пользователей, привыкших к Windows, а также для тех, кто использует компьютер в качестве домашней рабочей станции, удобнее пользоваться оконным графическим интерфейсом. При этом в некоторых дистрибутивах Linux могут возникать проблемы, связанные с необходимостью ручной конфигурации X-сервера.

Это связано с тем, что для видеокарт Nvidia для включения опций разгона и управления температурным режимом используются настройки файла xorg.conf из директории /etc/X11/, в то время как Ubuntu-подобные системы для этого используют конфигурационные файлы, находящиеся в каталоге /usr/share/X11/xorg.conf.d/

Продвинутая настройка требуется, если нужно использовать нестандартную конфигруацию, например, Internal GPU или видеокарту AMD для работы xserver (вывода видео), а GPU Nvidia — задействовать для CUDA-вычислений с включенными опциями разгона.

Разные способы настройки видеокарт nvidia, AMD и Intel осложняют их совместное использование в Linux. При работе в сложной конфигурации необходимо работать с конфигурационными файлами X-сервера, точно указывая параметры работы видеокарт, прописывая мониторы к которым они подключены, даже если они виртуальные.

Структура конфигурационного файла xorg.conf

xorg.conf состоит из нескольких секций, разделенных словами section и end section, которые определяют порядок взаимодействия с устройствами ввода-вывода:мышью, клавиатурой и дисплеем, например:

  • Module — отвечает за подключение/загрузку модулей вместе с x-сервером, которые расширяют функциональность драйверов видеокарты;
  • ServerLayoutопределяет имена устройств ввода и вывода информации для рабочей сессии сервера Xorg (мыши, клавиатуры и экрана);
  • InputDevice — разделы, необходимые для работы с мышью и клавиатурой. Для каждого устройства создается свой раздел;
  • Device — раздел, касающийся установленного на компьютере графического оборудования, драйверов;

Вид секции Device для видеокарты GeForce GTX 1060 3GB:

Section "Device"

Identifier "Device0"

Driver "nvidia"

VendorName "NVIDIA Corporation"

BoardName "GeForce GTX 1060 3GB"

BusID "PCI:1:0:0"

EndSection
  • Monitor — определяет настройки экрана мониторов, в частности, частоты горизонтальной развертки (HorizSync) и вертикального обновления (VertRefresh), разрешение экрана. Для корректной работы X-сервера обязательно должна указываться информация об идентификаторе монитора, опции его работы, например, DPMS для автоматического отключения монитора для энергосбережения;

Пример автоматически сгенерированной секции Monitor при отсутствии монитора, подключенного к видеокарте:

Section "Monitor"

Identifier "Monitor0"

VendorName "Unknown"

ModelName "Unknown"

Option "DPMS"

EndSection
  • Screen — определяет настройки дисплея как аппаратной связки монитора и графического адаптера, описанных в разделах более низкого уровня (Device и Monitor). Указанные в этом разделе настройки в процессе работы используются менеджером дисплеев;

Пример секции Screen в системе с включенной опцией разгона («Coolbits» «31»):

Section "Screen"

Identifier "Screen0"

Device "Device0"

Monitor "Monitor0"

DefaultDepth 24

Option "AllowEmptyInitialConfiguration" "True"

Option "Coolbits" "31"

SubSection "Display"

Depth 24

EndSubSection

EndSection

Как видно из примера, в секции Screen для видеокарты, соответствующей номеру Screen0, прописаны ссылки на разделы Device0 и Monitor0, которые стоят ниже по иерархии, чем раздел Screen. Драйвер видеокарты будет работать корректно, если информация, указанная во всех этих разделах будет коррелировать.

  • другие разделы.

Изменения, внесенные в автоматическом режиме командой nvidia-xconfig в файл xorg.conf, вступают в силу после перезапуска X-сервера. Как уже упоминалось ранее, в сложных аппаратных конфигурациях необходимо вручную корректировать xorg.conf, в противном случае графическое окружение не запустится, или будет работать некорректно. Эта тема будет рассматриваться в отдельной статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

English English Русский Русский