2

Я нашел только одно ядро, идентифицированное ядром из /proc/cpuinfo . Поэтому я устанавливаю ядро 686 pae, чтобы идентифицировать все ядра и получить многоядерную функциональность.

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

Но мне интересно, способно ли ядро 686 pae разделить все процессы и: 1. assign a set of processes to different cores 2. share a process between different cores что может уменьшить работу каждого ядра. Это фактически уменьшает процессы в очереди и быстрее завершает процессы. Может ли ядро, поддерживающее многопроцессорную обработку, достичь этого и помочь снизить нагрузку на процессор?

Любые другие методы, которыми я могу следовать для эффективного разделения процессов между ядрами?

1 ответ1

1

Уже можно ограничить ядра, на которых может выполняться процесс, установив сродство процессов. В Linux это можно сделать с помощью taskset чтобы ограничить число ядер, на которых может выполняться процесс. По умолчанию Linux использует упреждающий планировщик задач, который практически идентичен тому, что вы описали в (2) . Почти все основные операционные системы используют этот тип планировщика задач, что приводит к тому, что процесс по умолчанию запускается на нескольких ядрах.

Чтобы фактически гарантировать, что ваш процесс выполняется в течение X времени на ядре Y , как вы подразумевали в (1) , потребуется использование операционной системы реального времени; Существует также модуль ядра реального времени для Linux (например, RTLinux).


TL, DR: в ответ на вопрос, как я могу эффективно разделить процесс между ядрами? все основные операционные системы уже делают это из-за используемого планировщика задач. Задача операционной системы - контролировать, какой процесс выполняется, в какое время и где. Хотя вы можете "привязать" процесс к определенному ядру (или набору ядер) и запретить его выполнение на других ядрах (с помощью taskset), операционная система все равно будет планировать запуск других процессов на этом ядре при прерывании процесса. ,

Если вам когда-либо потребуется гарантировать выполнение вашей программы в течение как минимум X времени на ядре Y , вам следует рассмотреть либо ядро реального времени, либо "настройку" планировщика задач, который вы уже используете, для использования различных политик приоритета ( или даже поменяйте весь планировщик задач на другой!). Обратите внимание, что только операционная система реального времени будет гарантировать выполнение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .