Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Программные интерфейсы микроядра > Особенности многопроцессорных окружений > Введение в многопроцессорную обработку



Введение в многопроцессорную обработку

Начало работы с технологией многопроцессорной обработки и быстрый старт

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

Настройка образа ОС
Запуск симметричной многопроцессорной обработки
Ограничение использования вычислительных ресурсов в SMP системе

Настройка образа ОС

  1. Войдите в систему как пользователь root.

  2. Перейдите в каталог, в котором находится файл сборки загрузочного образа системы (например, /boot/build).

  3. Создайте копию файла построения загрузочного образа:

    cp neutrino-ksz.build neutrino-ksz_smp.build

  4. Начните редактировать копию файла построения загрузочного образа (например, neutrino-ksz_smp.build).

  5. Найдите ссылку на модуль procnto. Она может выглядеть следующим образом:

    PATH=/proc/boot:/bin:/sbin:/usr/bin:/usr/sbin \
    LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib \
    procnto-instr-ksz -v -K z,d


    Caution: В реальном файле сборки нельзя разбивать длинную строку на несколько сегментов с помощью символа (\); здесь мы делаем это только для удобочитаемости команд.

  6. Вместо procnto укажите подходящую многоядерную версию микроядра ОС; для этого определите используемую одноядерную версию, просмотрев содержимое каталога $KPDA_TARGET/<CPU>/boot/sys комплекта разработчика и добавьте к ее имени суффикс -smp. Пример:

    PATH=/proc/boot:/bin:/sbin:/usr/bin:/usr/sbin \
    LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib \
    procnto-smp-instr-ksz -v -K z,d

  7. Сохраните изменения в новом файле построения загрузочного образа.

  8. Создайте новый загрузочный образ с помощью утилиты комплекта разработчика mkifs:

    mkifs neutrino-ksz_smp.build neutrino-ksz_smp.ifs

  9. Поместите новый образ в нужное место (на примере x86 систем). Чтобы иметь возможность загружать систему при возникновении ошибки, мы рекомендуем действовать следующим образом:

  10. Перезагрузите систему.

Запуск симметричной многопроцессорной обработки

  1. Войдите в систему как обычный пользователь.

  2. Запустите несколько программ с бесконечным циклом работы. Например, воспользуйтесь утилитой hogs (или top), чтобы определить, какие процессы потребляют максимум ресурсов ЦП:

    hogs -n -%10

  3. Определите, на каких процессорах выполняются процессы, с помощью команды pidin sched.

  4. Создайте программу greedy.c с бесконечным циклом:

    #include <stdlib.h>
    int main( void )
    {
    while ( 1 )
    {
    }
    return EXIT_SUCCESS;
    }

  5. Скомпилируйте ее:

    ntox86-gcc -o greedy greedy.c

    и запустите на целевой системе:

    ./greedy &

    В однопроцессорной системе эта программа занимает весь ресурс ЦП (если не применяется адаптивное квотирование роесурсов), а в многоядерной системе — ресурс лишь одного процессора или ядра.

  6. Определите, на каких процессорах выполняются другие процессы, с помощью команды pidin sched. Скорее всего, они выполняются не на процессоре, где работает программа greedy.

Ограничение использования вычислительных ресурсов в SMP системе

  1. Запустите командный интерпретатор на указанном множестве процессоров при помощи утилиты on с ключами -C и/или -R:

    on -C 0 ksh

  2. Запустите несколько новых процессов в этом командном интерпретаторе. Обратите внимание, что они выполняются только на первом процессоре.

  3. Измените процессорную маску одного из процессов при помощи утилиты slay с ключами -C и/или -R. Теперь этот процесс выполняется только на указанных процессорах, а другие потомки — на процессорах, назначенных командному интерпретатору.

  4. Измените процессорную маску и маску наследования одного из процессов при помощи утилиты slay с ключами -C и/или -R и -i. Теперь этот процесс и его потомки выполняются только на указанных процессорах.




Предыдущий раздел: перейти