Создать сеть, масштабируемую до тысячи
Создать сеть, масштабируемую до тысячи узлов, – весьма непростая задача. Для того чтобы уменьшить траффик в сети и свести к минимуму время ожидания, каждому процессору придается большая собственная кеш-память. Измерения мультипроцессоров с совместным использованием памяти, выполняющих задачи с базами данных, показывает, что загрузка и выталкивание кэш-памяти значительно снижает производительность процессоров [35]. При возрастании параллелизма помехи при совместном использовании ресурсов ограничивают рост производительности. Для уменьшения помех в многопроцессорных системах часто используется механизм планирования в соответствии с родственностью, предполагающий закрепление каждого процесса за конкректным процессором, что является формой разделения данных и представляет собой переход к системам без совместного использования ресурсов. Разделение системы с совместно используемой памятью создает множество проблем, связанных с перекосом и балансировкой нагрузки, которые характерны для машин без совместного использования ресурсов; но при этом они не получают преимуществ более простой аппаратной связи. Опираясь на этот опыт, мы считаем, что при работе с базами данных высокопроизводительные машины с совместным использованием памяти экономически целесообразно масштабировать только до нескольких процессоров.
Для борьбы с помехами во многих мультипроцессорах с совместным использованием памяти применяется архитектура с совместным использованием дисков, что является логическим следствием планирования по близости (affinity scheduling). Если дисковую соединительную сеть можно масштабировать до тысяч дисков и процессоров, то схема с совместным использованием дисков оказывается пригодной для больших баз данных, предназначенных лишь для чтения, и для баз данных без совместного доступа. Архитектура с совместным использованием дисков мало эффективна для прикладных программ баз данных, которые считывают и записывает совместно используемые данные. Если процессору нужно изменить какие-либо данные, он сначала должен получить их текущую копию.
Содержание Назад Вперед