Astra linux планировщик заданий

Astra linux планировщик заданий

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

Главное окно программы, выполняемой от имени администратора (рис. 1), содержит меню (Меню), кнопки-переключатели режима отображения расписания задач и переменных окружения (Кнопки-переключатели режима отображения), панели «Запланированные задачи» (Панель «Запланированные задачи») и «Переменные окружения» (Панель «Переменные окружения») с кнопками сопровождения.

    Меню программы содержит следующие пункты:
  • «Файл»:
    • «Загрузить» — в соответствии с установленным режимом отображения загружается файл настроек программы с расписанием задач и переменными окружения;
    • «Сохранить» — расписание задач и переменные окружения сохраняются в файле настроек программы;
    • «Выход» — если настройки не изменялись, то работа программы завершается. В противном случае открывается окно с запросом на подтверждение сохранения конфигурации:
      • [Да] — новые значения сохраняются в файле настроек программы, окно закрывается, и работа программы завершается;
      • [Нет] — окно закрывается, и работа программы завершается;
      • [Отмена] — окно закрывается;
  • «Справка»:
    • «Содержание» — вызов окна справки;
    • «О программе. » — вызов окна с краткой информацией о программе.

Кнопки-переключатели режима отображения

Кнопками-переключателями устанавливается режим отображения данных на панелях «Запланированные задачи» (Панель «Запланированные задачи») и «Переменные окружения» (Панель «Переменные окружения»).

    В режиме администратора все данные, из числа сохраняемых в файле настроек программы, доступны для редактирования, и существуют следующие режимы отображения (см. рис. 1):
  • «Показать для системы» — отображаются системные данные;
  • «Показать для пользователя» — отображаются данные, установленные для пользователя, указанного в строке справа от кнопки (устанавливается из выпадающего списка).

Панель «Запланированные задачи»

    На панели «Запланированные задачи» (см. рис. 1) в табличном виде отображается расписание задач:
  • «Пользователь» (только в режиме отображения «Показать для системы») — пользователь, от имени которого выполняется задача;
  • «Расписание» (только в режиме отображения «Показать для системы») — краткое описание начала выполнения задачи: перечисляются минуты, часы, дни месяца, месяцы и дни недели (символ * в соответствующей позиции обозначает: ежеминутно, ежечасно, каждый день, каждый месяц, каждый день недели);
  • «Команда» — имя программы, назначенной к выполнению, в рамках данной задачи;
  • «Состояние» — разрешение или запрет задачи к выполнению;
  • «Описание» — сопроводительный текст;
  • «Подробнее» — подробное описание установленного времени начала выполнения задачи (расшифровывается символ * из столбца «Расписание»).

Щелчок левой кнопкой мыши на строке таблицы выделяет ее. Несколько строк (задач) выделяются щелчком левой кнопки мыши на каждой строке при удержании клавиши .

Время запуска установленных задач определяется по системным дате и времени.

Контекстное меню

    Щелчком правой кнопки мыши на панели «Запланированные задачи» открывается контекстное меню:
  • «Новая задача. » — открывается окно «Новая задача» (рис. 2):
  • «Команда» — в стоке или из диалогового окна устанавливается полное или относительное (если имя каталога с программой находится среди значений переменной окружения PATH) имя программы, назначенной к выполнению в рамках данной задачи, вместе, если это необходимо, со значениями аргументов и параметров ввода командной строки. Кнопками справа от строки ввода открывается диалоговое окно для выбора и установки (слева направо) имени файла или пункта главного меню (подменю) рабочего стола. После подтверждения или отмены установки имени файла или пункта меню (подменю) окно закрывается, и установленное имя файла или приложения, запускаемого из установленного пункта меню, соответственно, отображается или не отображается в строке ввода команды;
  • «Запустить как» (только при установленном режиме отображения «Показать для системы» в главном окне) — из выпадающего списка устанавливается имя пользователя от имени которого программа, назначенная в строке «Команда», запускается;
  • флаг «Графическое приложение» — при включении добавляет, а при выключении убирает выставление переменной окружения DISPLAY в строке «Команда»;
  • «Запустить как» (только в режиме отображения «Показать для системы») — из списка устанавливается пользователь, от имени которого выполняется команда;
  • «Комментарий» — устанавливается сопроводительный текст;
  • флаг «Разрешить задачу» — устанавливает разрешение или запрет команды к выполнению;
  • флаг«Запускать при загрузке системы» — устанавливает запуск команды при загрузке системы;
  • флаг «Запускать каждый день» — устанавливает ежедневный запуск команды;
  • «Месяцы» — устанавливаются месяцы запуска команды;
  • «Дни месяца» — устанавливаются дни запуска команды;
  • «Часы» — устанавливаются часы запуска команды;
  • «Дни недели» — устанавливаются дни недели запуска команды;
  • «Минуты» — устанавливаются непосредственно минуты, или из выпадающего списка «Шаблон» устанавливается минутный режим запуска команды;
  • [Да] — устанавливается новая задача в расписании, в таблице появляется соответствующая запись, и окно закрывается;
  • [Отмена] — новая задача не устанавливается, окно закрывается;
Читайте также:  Lumia камера или камера windows
  • «Правка. » (активируется привыделении задачи в расписании на панели «Запланированные задачи») — открывается окно «Править задачу», которое содержит элементы, аналогичные элементам окна «Новая задача» (см. рис. 2), но c уже установленными для правки в позициях ввода значениями параметров задачи;
  • «Удалить» — открывается окно «Удаление задач» с запросом на подтверждение удаления выделенных задач:
    • [Да] — выделенные задачи удаляются из расписания, и окно закрывается;
    • [Нет] — окно закрывается;
  • «Вырезать» — выделенные строки таблицы расписания задач копируются в буфер обмена и удаляются из таблицы;
  • «Копировать» — выделенные строки таблицы расписания задач копируются в буфер обмена;
  • «Вставить» — строки из буфера обмена копируются в строку позиции курсора;
  • «Запустить сейчас» — открывается окно с запросом на подтверждение запуска команды, назначенной к выполнению в рамках выделенной или первой из числа выделенных в таблице расписания задач:
    • [Да] — окно закрывается, и команда начинает выполняться;
    • [Нет] — окно закрывается.
  • Кнопки сопровождения

    Кнопки сопровождения располагаются справа от панели «Запланированные задачи» (см. рис. 1) и повторяют аналогичные пункты контекстного меню (см. Контекстное меню): [Новая задача. ], [Правка. ], [Удалить], [Запустить сейчас]; [Печать. ] — открывает диалоговое окно «Печать» (Окно «Печать»).

    Окно «Печать»

    В окне «Печать» (рис. 3) устанавливаются параметры и выполняется печать на устройстве или запись в файл (в формате PDF) расписания задач и переменных окружения, отображаемых на панелях «Запланированные задачи» и «Переменные окружения».

      Окно содержит следующие управляющие элементы:
    • поле «Принтер»:
      • «Название» — в строке из выпадающего списка доступных принтеров устанавливается имя принтера или печать в файл. Ниже, в соответствии с установками описания принтера отображаются его свойства: «Расположение» и «Тип»;
      • «Вывод в файл» — в строке ввода или с помощью кнопки вызова диалогового окна [. ] (справа от строки) устанавливается имя файла для записи. Диалоговое окно после подтверждения или отмены установки закрывается, и новое имя файла, соответственно, устанавливается или не устанавливается;
    • [Параметры»] — вид окна изменяется (рис. 4): появляются вкладки «Копии» и «Параметры», а сама кнопка заменяется на кнопку [Параметры«], которой выполняется возвращение окна к прежнему виду.

      • «Копии»:
        • поле «Диапазон печати» — кнопками-переключателями «Все», «Страницы» устанавливается печать либо всего документа, либо страниц в диапазоне номеров: «с» — начало диапазона, «по» — конец диапазона. «Список страниц» — из списка устанавливается вариант отбора страниц;
        • поле «Настройки вывода» — в числовом поле «Количество копий» устанавливается количество копий. Флаг «Обратный порядок» устанавливает печать страниц документа в обратном порядке;
      • «Параметры» (рис. 5):

        • поле «Двусторонняя печать» — кнопками-переключателями «Нет», «По длинной стороне», «По короткой стороне» устанавливается, соответственно, односторонняя печать, оборотная печать c книжной ориентацией страницы и оборотная печать с альбомной ориентацией страницы;
        • поле «Режим цвета» — кнопками-переключателями «Цвет», «Оттенки серого» устанавливается, соответственно, цветная и полутоновая (оттенки серого) печать;
    • [Печать] — выполняется печать или запись в файл, и окно закрывается;
    • [Отмена] — окно закрывается.

    Панель «Переменные окружения»

      На панели «Переменные окружения» (см. рис. 1) в табличном виде отображается перечень переменных окружения, установленных для всех задач расписания:
    • «Переменная» — имя переменной;
    • «Значение» — значение переменной;
    • «Состояние» — разрешение или запрет установки переменной;
    • «Комментарий» — сопроводительный текст.

    Щелчком левой кнопки мыши на строке таблицы она (переменная) выделяется. Несколько строк (переменных) выделяются щелчком левой кнопки мыши на каждой строке при удержании клавиши .

    Контекстное меню

      Щелчком правой кнопки мыши на панели «Переменные окружения» открывается контекстное меню:
    • «Новая переменная. » — открывается окно «Новая переменная» (рис. 6):
    • «Переменная» — в строке ввода или из выпадающего списка устанавливается переменная окружения. Переменные в списке:
      • DISPLAY — номер дисплея, на котором запускается графическая оболочка ОС;
      • LANG — локаль, с которой выполняется задача;
      • PATH — каталоги поиска программ;
      • HOME — домашний каталог пользователя;
      • MAILTO — имя пользователя, которому будет отправлено письмо, содержащее отчет о запуске задачи;
      • SHELL — интерпретатор команд, внутри которого будет запущена назначенная задача;
      • LD_CONGIG_PATH — дополнительные (помимо системных) каталоги поиска разделяемых библиотек;
    • «Значение» — устанавливается значение переменной;
    • «Комментарий» — задается сопроводительный текст;
    • флаг «Переменная разрешена» — устанавливает разрешение или запрет установки значения переменной;
    • [Да] — устанавливается значение новой переменной, и окно закрывается;
    • [Отмена] — значение новой переменной не устанавливается, окно закрывается;
  • «Правка. » — открывается окно «Править переменную». Окно содержит управляющие элементы, аналогичные элементам окна «Новая переменная» (см. рис. 6), но c уже установленными для правки в позициях ввода значениями параметров выделенной переменной;
  • «Удалить» — открывается окно «Удаление переменных» с запросом на подтверждение удаления выделенных переменных:
    • [Да] — выделенные переменные удаляются из списка переменных окружения, из таблицы удаляются выделенные строки, и окно закрывается;
    • [Нет] — окно закрывается.
  • «Вырезать» — выделенные строки таблицы переменных окружения копируются в буфер обмена и удаляются из таблицы;
  • «Копировать» — выделенные строки таблицы переменных окружения копируются в буфер обмена;
  • «Вставить» — строки из буфера обмена копируются в строку позиции курсора.
  • Кнопки сопровождения

    Кнопки сопровождения располагаются справа от панели «Переменные окружения» (см. рис. 1) и повторяют аналогичные пункты контекстного меню (см. Контекстное меню): [Новая переменная. ], [Правка. ], [Удалить].

    Источник

    Принцип работы планировщика задач в Linux

    Планирование – это процесс распределения ресурсов системы для выполнения задач. В статье мы рассмотрим его вариант, в котором ресурсом является одно или несколько ядер процессора, а задачи представлены потоками или процессами, которые нужно выполнить.

    Само планирование осуществляется планировщиком, который нацелен:

    • Максимизировать пропускную способность, то есть количество задач, выполняемых за единицу времени.
    • Минимизировать время ожидания, то есть время, прошедшее с момента готовности процесса до начала его выполнения.
    • Минимизировать время ответа, то есть время, прошедшее с момента готовности процесса до завершения его выполнения.
    • Максимизировать равнодоступность, то есть справедливое распределение ресурсов между задачами.

    Если с этими метриками вы не знакомы, то предлагаю просмотреть несколько примеров в другой моей статье (англ.), посвященной алгоритмам планировщика.

    Типы процессов в Linux

    В Linux процессы делятся на два типа:

    • Процессы реального времени.
    • Условные процессы.

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

    В качестве примера можно привести процесс переноса, отвечающий за распределение рабочей нагрузки между ядрами ЦПУ.

    Условные же процессы не ограничиваются строгими рамками времени ответа и в случае занятости системы могут подвергаться задержкам.

    В пример можно привести процесс браузера, который позволяет вам читать эту статью.

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

    Планирование в реальном времени

    В случае с планированием в реальном времени используются две политики, SCHED_RR и SCHED_FIFO .

    Политика определяет количество выделяемого процессу времени, а также принцип организации очереди на выполнение.

    Суть в том, что готовые к выполнению процессы хранятся в очереди, откуда выбираются планировщиком на основе той или иной политики.

    SCHED_FIFO

    В данной политике планировщик выбирает процесс, ориентируясь на время его поступления (FIFO = первым вошел, первым вышел).

    Процесс с политикой планирования SCHED_FIFO может «освободить» ЦПУ в нескольких случаях:

    • Процесс ожидает, к примеру, операции ввода/вывода, после чего по возвращению в состояние «готов» помещается в конец очереди.
    • Процесс уступил ЦПУ через системный вызов sched_yield , после чего он тут же возвращается в конец очереди.

    SCHED_RR

    SCHED_RR подразумевает циклическое планирование.

    В этой политике каждый процесс в очереди получает интервал времени (квант) и выполняется в свою очередь (исходя из приоритета) по циклическому принципу.

    Для лучшего понимания рассмотрим пример, где в очереди находятся три процесса, A B C , все из которых работают по политике SCHED_RR .

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

    Обобщение по планированию в реальном времени

    Процесс реального времени может планироваться по двум разным политикам, SCHED_FIFO и SCHED_RR .

    Политика влияет на принцип работы очереди и определяет, сколько времени нужно выделить тому или иному процессу.

    Условное планирование

    Здесь мы знакомимся с Completely Fair Scheduler (CFS, абсолютно справедливый планировщик), представляющим алгоритм планирования условных процессов, появившийся в версии Linux 2.6.23.

    Помните метрики планирования, которые мы затронули в начале статьи? Так вот CFS фокусируется на одной из них – он стремится к максимальной равноправности процессов, то есть обеспечивает выделение всем процессам равных квантов времени ЦПУ.

    Обратите внимание, что процессы с повышенным приоритетом все равно могут получать на обработку больше времени.

    Для лучшего понимания принципа работы CFS нужно познакомиться с новым термином – виртуальное время выполнения ( vruntime ).

    Виртуальное время выполнения

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

    Как было сказано, CFS стремится быть максимально справедливым, в связи с чем по очереди планирует готовый к выполнению процесс с минимальным виртуальным временем.

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

    CFS —Абсолютно справедливый планировщик

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

    CFS задействует красно-черное дерево, представляющее бинарное дерево поиска – то есть добавление, удаление и поиск выполняются за O(logN) , где N выражает количество процессов.

    Ключом в этом дереве выступает виртуальное время выполнения процесса. Новые процессы или процесс, возвращающиеся из ожидания в состояние готовности, добавляются в дерево с ключом vruntime = min_vruntime . Это очень важный момент, который позволяет избежать дефицита внимания ЦПУ для старых процессов.

    Вернемся к самому алгоритму. В первую очередь он устанавливает себе лимит времени – sched_latency .

    В течение этого времени алгоритм стремится выполнить все готовые процессы – N . Это означает, что каждый процесс получит интервал времени равный временному лимиту, поделенному на количество процессов: Qi = sched_latency/N .

    Когда процесс исчерпывает свой интервал ( Qi ), алгоритм выбирает в дереве следующий процесс с наименьшим виртуальным временем.

    Рассмотрим ситуацию, которая может стать проблематичной для такой схемы работы алгоритма.

    Предположим, что алгоритм выбрал лимит времени 48мс при наличии 6 процессов – в этом случае каждый процесс получит на выполнение по 8мс.

    Но что произойдет, если система окажется перегружена процессами? Предположим, что лимит времени остается равен 48мс, но теперь у нас 32 процесса. В результате каждый получит уже всего по 1.5мс на выполнение, что приведет к замедлению работы всей системы.

    Почему?

    Все дело в переключении контекста, которое подразумевает сохранение состояния процесса или потока с последующим его восстановлением и продолжением выполнения.

    Каждый раз, когда процесс исчерпывает свое время на выполнение, и планируется очередной процесс, активируется переключение контекста, которое также занимает некоторое время.

    Предположим, что на него уходит 1мс. В первом примере, где каждому процессу у нас отводилось по 8мс, это вполне допустимо. Так мы тратим 1мс на переключение контекста и 7мс на фактическое выполнение процесса.

    А вот во втором примере на выполнение каждого процесса останется уже всего по 0.5мс – то есть большая часть времени уходит на переключение контекста, отсюда и проблема с выполнением.

    Для того, чтобы исправить ситуацию, мы вводим новую переменную, которая определит минимальную протяженность кванта времени выполнения – min_granularity .

    Представим, что min_granularity = 6мс , и вернемся к нашему примеру, где лимит времени равен 48мс при наличии 32 процессов.

    С помощью той же формулы, что и прежде, мы получаем по 1.5мс на каждый процесс, но теперь такой вариант не допускается, так как min_granularity задает минимальный квант времени, который должен получить каждый процесс.

    В данном случае, где Qi , мы берем Qi равным min_granularity , то есть 6мс, и соответствующим образом изменяем временной лимит. В результате он составит Qi x N = 6мс x 32 = 192мс .

    На данный момент отличия между CFS и RR могут оказаться недостаточно наглядны, поскольку они оба определяют временные интервалы и организуют порядок выполнения процессов. Для лучшего обобщения и понимания различий между этими алгоритмами я приведу краткую таблицу:

    RR – циклический список CFS – абсолютно справедливый планировщик
    • Квант времени статичен и не зависит от количества процессов в системе.
    • Квант времени динамичен и может изменяться в соответствии с количеством процессов в системе.
    • По исчерпанию процессом его кванта времени, RR выбирает очередной процесс с наименьшим виртуальным временем из циклического списка.
    • По исчерпанию процессом его кванта времени, CFS выбирает очередной процесс с наименьшим виртуальным временем из красно-черного дерева.

    Надеюсь, что статься помогла вам лучше понять реализацию планирования задач в ядре Linux.

    Прошу обратить внимание, что автор оригинальной статьи Eliran поблагодарил читателей за интерес и отдельно пригласил желающих со знанием английского языка в свой блог Coding Kaiser для ознакомления с множеством материалов по смежным и другим интересным темам, а также обмена идеями.

    Источник

    Читайте также:  Easy recovery essentials для windows
    Оцените статью