stringtranslate.com

Программная блокировка

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

Критические секции уровня ядра

В большинстве многопроцессорных систем каждый процессор планирует и контролирует себя, поэтому процессор-«супервизор» отсутствует [1] , а структуры данных ядра являются глобально общими; разделы кода, которые обращаются к этим общим структурам данных, являются критическими разделами . Этот выбор конструкции сделан для улучшения масштабируемости, надежности и модульности. [1] Примерами такой структуры данных ядра являются список готовности и каналы связи .

«Конфликт» возникает, когда несколько процессоров одновременно пытаются получить доступ к одному и тому же ресурсу (части памяти). Чтобы предотвратить критические гонки и несогласованность , только одному процессору ( ЦП ) в данный момент разрешен доступ к определенной структуре данных (части памяти), в то время как другие ЦП, пытающиеся получить доступ в то же время, блокируются и находятся в состоянии ожидания. . [1] [2]

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

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

Аналитические исследования

Приняв в качестве параметров средний интервал времени, затраченный процессором в критических секциях уровня ядра ( L , для времени в заблокированном состоянии), и средний интервал времени, затраченный процессором в задачах вне критических секций ( E ), [1] отношение L /E имеет решающее значение при оценке блокировки программного обеспечения.

Типичные значения L/E варьируются от 0,01 до 0,1. [3] Например, в системе с соотношением L/E 0,05 при наличии 15 ЦП ожидается, что в среднем 1 ЦП всегда будет простаивать; [3] при 21 процессоре 2.8 будет простаивать; [4] при 40 процессорах 19 будут простаивать; при 41 процессоре 20 будут простаивать. [3] Следовательно, добавление более 40 процессоров в эту систему будет бесполезным. В общем, для каждого значения L/E существует порог максимального количества полезных процессоров.

Устранение блокировки программного обеспечения

Чтобы снизить снижение производительности из-за программной блокировки до разумного уровня ( L/E от 0,05 до 0,1), ядро ​​и/или операционная система должны быть спроектированы соответствующим образом. Концептуально наиболее правильным решением является разложение каждой структуры данных ядра на более мелкие независимые подструктуры, каждая из которых имеет более короткое время разработки. Это позволяет нескольким процессорам получить доступ к исходной структуре данных.

По оценкам, многие однопроцессорные системы с иерархическими доменами защиты тратят до 50% времени на выполнение операций в «режиме супервизора». Если бы такие системы были адаптированы для многопроцессорной обработки путем установки блокировки при любом доступе к «состоянию супервизора», L/E легко было бы больше 1, [3] что привело бы к системе с той же пропускной способностью, что и у однопроцессора, несмотря на количество процессоров.

Смотрите также

Примечания

  1. ^ abcd Мэдник 1968, стр.19
  2. ^ Зальцер, Джером (июнь 1966 г.). Управление дорожным движением в мультиплексной компьютерной системе (PDF) (доктор философии). Проект MIT MAC MAC-TR-30.
  3. ^ abcd Мэдник 1968, стр.20
  4. ^ Рейнор 76, стр.62

Рекомендации

дальнейшее чтение