VP (Virtual Processor)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:49, 16 мая 2016.
Рис. 1. Виртуальные процессоры

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

Виртуальный процессор - это процесс, обработку которого запланировала операционная система. На Рис. 1 показана взаимосвязь приложений-клиентов с виртуальными процессорами. Небольшое число виртуальных процессоров обслуживает значительное большее число приложений или запросов клиентов.

Содержание

Типы виртуальных процессоров

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

Класс виртуальных процессоров Категория Назначение
ADM административные Выполнение административных функций.
ADT аудит Выполнение функций аудита.
AIO дисковый ввод-вывод Выполнение дискового ввода-вывода, не связанного с ведением журнала. Если используется KAIO, виртуальные процессоры AIO выполняют операции ввода-вывода для буферизованных дисковых пространств.
BTS Базовый текстовый поиск Выполнение операций индекса базового текстового поиска и обработка запросов.
CPU Централизованная обработка Выполнение всех потоков сеансов и некоторых системных потоков. Выполнение потока для асинхронного ввода-вывода ядра (Kernel Asynchronous I/O - KAIO), если это возможно. Возможно выполнение одного потока опроса в зависимости от конфигурации.
CSM Модуль поддержки связи Выполнение операций служб поддержки связи.
Encrypt Шифрование Используется сервером баз данных при вызове функций шифрования и расшифровки.
Java VP (JVP) Java UDR Выполнение Java UDR. Содержит Java Virtual Machine (JVM).
LIO дисковый ввод-вывод Запись в файлы логического журнала (внутренний класс), если они находятся в буферизованном дисковом пространстве.
MSC Разное Требования служб для системных вызовов, которым требуется очень большой стек.
OPT (UNIX) Оптическая подсистема Выполнение операций ввода-вывода оптического диска.
PIO дисковый ввод-вывод Запись в файл физического журнала (внутренний класс), если он находится в буферизованном дисковом пространстве.
SHM Сеть Осуществление связи через совместную память.
SOC Сеть Осуществление сетевых взаимодействий с использованием гнезд.
TLI Сеть Осуществление сетевых взаимодействий с использованием интерфейса Transport Layer Interface (TLI).
имя класса Пользоват. Выполнение пользовательских подпрограмм в режиме безопасного потока, чтобы возможный сбой подпрограммы не повлиял на сервер баз данных. Определяется с использованием параметра конфигурации VPCLASS. Вы должны задать имя класса.

Классы виртуальных процессоров

Виртуальные процессоры CPU

Виртуальный процессор CPU выполняет все потоки сеансов (потоки, обрабатывающие требования от приложений-клиентов SQL) и некоторые внутренние потоки. Внутренние потоки обеспечивают выполнение внутренних служб сервера баз данных. Например, внутренним потоком является поток, осуществляющий прием требований об установлении соединений от приложений-клиентов.

С каждым виртуальным процессором CPU может быть связан собственный кэш памяти. В каждом блоке кэша собственной памяти содержится от 1 до 32 страниц памяти, размер каждой из которых составляет 4096 байт. Сервер баз данных использует собственный кэш памяти, чтобы сократить время доступа к блокам памяти. Используйте параметр конфигурации VP_MEMORY_CACHE_KB, чтобы включить собственный кэш памяти и задать информацию о кэше памяти

Виртуальные процессоры Java

Java-UDR и Java-приложения выполняются на специализированных виртуальных процессорах, именуемых виртуальными процессорами Java (Java Virtual Processor - JVP). В код JVP встраивается виртуальная машина Java (JVM). У JVP те же возможности, что и у VP CPU, в том смысле, что JVP может обрабатывать полные запросы SQL.

Вы можете задать столько JVP, сколько позволит ваша операционная система. Если вы запускаете много Java-UDR или параллельных запросов PDQ в сочетании с Java-UDR, вам следует сконфигурировать больше виртуальных процессоров Java (JVP). Более подробную информацию о UDR на языке Java смотрите в публикации J/Foundation Developer's Guide.

Чтобы сконфигурировать JVP, используйте параметр конфигурации VPCLASS в сочетании с ключевым словом jvp.

Виртуальные процессоры дискового ввода-вывода

Обработку дискового ввода-вывода осуществляют следующие классы виртуальных процессоров:

  • PIO (Physical-Log I/O - ввод-вывод физического журнала)
  • LIO (Logical-Log I/O - ввод-вывод логического журнала)
  • AIO (Асинхронный ввод-вывод)
  • CPU (Асинхронный ввод-вывод ядра)

Класс PIO выполняет все операции ввода-вывода для файла физического журнала, а класс LIO - все операции ввода-вывода для файлов логического журнала при условии, что эти файлы находятся в небуферизованном дисковом пространстве, а сервер баз данных реализует KAIO.

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

Сервер баз данных использует класс CPU для выполнения KAIO, если эта функция доступна на платформе. Если сервер баз данных реализует KAIO, поток KAIO выполняет всю обработку ввода-вывода для небуферизованного дискового пространства, включая обработку ввода-вывода для физических и логических журналов.

Сетевые виртуальные процессоры

Связь между клиентом и сервером, клиент может соединяться с сервером баз данных следующими способами:

  • Путем использования сетевого соединения
  • Путем использования канала
  • Через совместную память

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

Виртуальный процессор модуля поддержки связи

Класс виртуальных процессоров модуля поддержки связи (Communications Support Module - CSM) обеспечивает функции службы поддержки связи и модуля поддержки связи.

Если модуль поддержки связи не установлен на режим GSSCSM с поддержкой единой регистрации, то количество запускаемых сервером баз данных виртуальных процессоров CSM равно числу запускаемых виртуальных процессоров CPU. Если задан модуль GSSCSM, сервер баз данных запускает только один виртуальный процессор CSM.

Виртуальные процессоры шифрования

Если в файле конфигурации ONCONFIG не задана опция encrypt параметра VPCLASS, сервер баз данных запустит один виртуальный процессор шифрования при первом вызове любой из функций шифрования или расшифровки, заданной для шифрования на уровне столбцов. Если потребуется, вы сможете задать несколько виртуальных процессоров шифрования, чтобы сократить время, необходимое для запуска сервера баз данных.

Чтобы сконфигурировать виртуальные процессоры шифрования, используйте параметр конфигурации VPCLASS в сочетании с ключевым словом encrypt. Например, чтобы добавить пять виртуальных процессоров шифрования, добавьте в файл ONCONFIG следующую информацию:

VPCLASS encrypt,num=5

Ту же самую информацию можно изменить при помощи утилиты onmode следующим образом:

onmode -p 5 encrypt

Виртуальный процессор оптической подсистемы

Класс виртуальных процессоров оптической подсистемы (OPT) используется только внутри оптической подсистемы. Оптическая подсистема запускает один виртуальный процессор в классе OPT, если присутствует параметр конфигурации STAGEBLOB.

Виртуальный процессор аудита

Если вы включите режим аудита, задав для параметр ADTMODE в файле ONCONFIG значение 1, сервер баз данных запустит один виртуальный процессор в классе аудита (ADT).

Виртуальные процессоры в группе Разное

Виртуальные процессоры в группе Разное (MSC) обслуживают требования системных вызовов, для выполнения которых может потребоваться очень большой стек, например, требования о предоставлении информации о текущем пользователе или имени хост-системы. На таком виртуальном процессоре выполняется только один поток; он выполняется с использованием стека размером 128 КБ.

Виртуальные процессоры базового текстового поиска (Basic Text Search, BTS)

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

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

Виртуальный процессор BTS работает без уступок. Одновременно он обрабатывает не более одной операции индекса. Чтобы обрабатывать несколько операций индекса BTS и запросов одновременно, надо создать дополнительные виртуальные процессоры BTS.

Чтобы сконфигурировать виртуальные процессоры BTS, надо использовать параметр конфигурации VPCLASS в сочетании с ключевым словом BTS. Например, чтобы добавить пять виртуальных процессоров BTS, надо вставить следующую строку в файл onconfig и перезапустить сервер баз данных:

VPCLASS bts,num=5

В следующем примере показано как можно динамически добавлять виртуальные процессоры BTS при помощи команды onmode -p:

onmode -p 5 bts

Управление виртуальными процессорами

Задание параметров виртуального процессора с помощью текстового редактора

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

Параметр Суб-параметры Назначение
MULTIPROCESSOR Позволяет задать параметры потоков сетевого протокола (и виртуальных процессоров)
SINGLE_CPU_VP Позволяет указать, что вы работаете на компьютере с одним виртуальным процессором CPU
VPCLASS
adm        kio       shm
adt        lio       soc
aio        msc       str
cpu        ntk       tli
encrypt    opt 
jvp        pio 
Позволяет задать заранее определенное имя класса для виртуальных процессоров. Например, с помощью кода jvp можно указать виртуальный процессор Java (JVP).
VPCLASS num=число Позволяет задать число виртуальных процессоров указанного класса, которое должен запустить сервер баз данных
VPCLASS max=число Позволяет задать максимально допустимое число виртуальных процессоров для класса
VPCLASS noage Позволяет отключить старение приоритета
VPCLASS aff = ( число_процессоров, начальный_диапазон - конечный_диапазон, начальный_диапазон - конечный_диапазон / инкремент ) Позволяет назначить виртуальные процессоры для процессоров CPU, если поддерживается аффинитет процессоров
VPCLASS пользовательский Позволяет указать пользовательский виртуальный процессор
VPCLASS noyield Позволяет указать неуступающий виртуальный процессор
VP_MEMORY_

CACHE_KB

Позволяет ускорить доступ к блокам памяти.

Задание параметров виртуального процессора при помощи ON-Monitor

Чтобы задать параметры конфигурации виртуального процессора при помощи ON–Monitor, выберите опцию Parameters > perFormance (Параметры > Производительность).

Чтобы задать сетевые виртуальные процессоры, введите число виртуальных процессоров, а затем укажите одну из следующих комбинаций интерфейса и протокола: ipcshm, ipcstr, tlitcp, tlispx или soctcp.

Запуск и остановка виртуальных процессоров

При запуске сервера баз данных утилита oninit запускает виртуальные процессоры того типа и в том количестве, которые вы задали непосредственным или косвенным образом. В первую очередь виртуальные процессоры можно сконфигурировать при помощи параметров ONCONFIG, а в случае сетевых виртуальных процессоров - при помощи параметров в файле или в реестре sqlhosts.

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

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

Мониторинг виртуальных процессоров

Для мониторинга виртуальных процессоров можно использовать следующие опции команды onstat -g:

  • ath
  • glo
  • ioq
  • rea

Чтобы получить информацию о работающих в данный момент виртуальных процессорах, запросите информацию из таблицы sysvpprof. Эта таблица содержит следующие столбцы:

столбец

Описание

vpid

ID виртуального процессора

class

Класс виртуального процессора

usercpu

Время работы в пользовательском режиме CPU (в минутах)

syscpu

Время работы в системном режиме CPU (в минутах)

Преимущества виртуальных процессоров

По сравнению с процессом сервера баз данных, который обслуживает одно приложение-клиент, динамический многопоточный виртуальный процессор сервера баз данных обеспечивает следующие преимущества:

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

Совместная обработка

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

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

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

Экономия памяти и ресурсов

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

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

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

Параллельная обработка

Ниже перечислены случая, когда виртуальные процессоры в классе CPU могут выполнять несколько потоков сеансов, работая параллельно для одного клиента:

  • Построение индекса
  • Сортировка
  • восстановление
  • Сканирование
  • Объединение
  • Сводка
  • Группа
  • Выполнение пользовательских подпрограмм (UDR)

Добавление и удаление виртуальных процессоров в подключенном режиме

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

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

Привязка виртуальных процессоров к CPU

В некоторых многопроцессорных системах можно привязать процесс к определенному физическому процессору (CPU). Эта возможность называется аффинитетом процессоров.

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

Ссылки