Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.2. Спин-блокировка

При проектировании систем следует помнить, что процессы не должны изменять память, используемую другими процессами. Такие изменения могут привести к искажению данных и сбою системы. Чтобы этого не случилось, операционная система блокирует участок памяти, выполняет операцию и снова его освобождает.
Распространенным решением является спин-блокирование — блокирование с ожиданием, то есть процесс периодически проверяет наличие доступа к разделяемому ресурсу и блокирует его, как только ресурс освобождается. Если к ресурсу обращается несколько процессов, доступ получит тот процесс, который первым запросил его состояние после освобождения.
Недостаток этого подхода состоит в том, что в системе NUMA не все процессы обладают равноправным доступом. Процессы, выполняемые на том же узле NUMA, где расположен разделяемый ресурс, имеют преимущество, в то время как удаленные процессы не смогут часто его использовать, и их производительность пострадает.
Red Hat Enterprise Linux решает эту задачу при помощи спин-блокировок по мере поступления запросов, добавляя процессы в очередь, тем самым обеспечивая равномерность обработки.
Несмотря на то что такой тип блокировки характеризуется более высокими издержками, он значительно облегчает масштабирование и увеличивает производительность в системах NUMA.