Неправильное совместное использование

Системы DSM по некоторым ключевым признакам напоминают мультипроцессоры. В обеих системах при обращении к нелокальному слову памяти из текущего местонахождения этого слова извлекается блок памяти, содержащий слово, и помещается на обратившуюся машину (соответственно в оперативную память или в кэш).
Для конструктора важен вопрос: насколько большим должен быть этот блок? В мультипроцессорах размер блока кэша обычно составляет 32 или 64 байта, чтобы не занимать шину передачей данных слишком долго. В системах DSM блок должен быть кратен размеру страницы (потому что MMU работает со страницами), и он может состоять из 1, 2, 4 или более страниц. По сути, работа с блоками таких размеров имитирует увеличенный размер страницы.

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

В то же время при более объемной передаче данных сеть будет задействована дольше, блокируя разрешение ошибок отсутствия страниц, вызванных другими процессами. Кроме этого, слишком большой действительный размер страницы создает новую проблему, которая называется неправильным совместным использованием (false sharing) (рис.

8.23). Здесь мы имеем дело со страницей, содержащей две не связанные друг с другом совместно используемые переменные A и B. Процессор 1 интенсивно пользуется переменной A, считывая и записывая ее значение. А процессор 2 часто обращается к переменной B. В такой ситуации страница, содержащая обе переменные, будет постоянно перемещаться вперед и назад между двумя машинами.

Рис. 8.23. Неправильное совместное использование страницы, содержащей несвязанные переменные


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

Хорошо продуманные компиляторы, понимающие суть проблемы и учитывающие ее существование при помещении переменных в адресные пространства, могут посодействовать в уменьшении количества случаев неправильного совместного использования и в повышении производительности. Но проще, конечно, сказать, чем сделать. Более того, если неправильное совместное использование заключается в том, что узел 1 использует один элемент массива, а узел 2 использует другой элемент того же массива, то вряд ли даже хорошо продуманный компилятор сможет устранить эту проблему.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Неправильное совместное использование:

  1. Раздел III Использование достижений криминалистической психологии при собирании, оценке, использовании личностной информации
  2. 2.4. Неправильно понятая сексуальность
  3. Последствия неправильного дыхания
  4. МАНЕРА ДЕРЖАТЬСЯ: ПРАВИЛЬНАЯ И НЕПРАВИЛЬНАЯ
  5. МАНЕРА ДЕРЖАТЬСЯ: ПРАВИЛЬНАЯ И НЕПРАВИЛЬНАЯ
  6. Номер один в списке неправильных действий
  7. Размышления о Неправильном мире О страданиях по программе
  8. Как неправильно сказать: «Пора спать»
  9. «ЭТО МОЙ СЕДЬМОЙ РАЗВОД! ЧТО ЖЕ Я ДЕЛАЮ НЕПРАВИЛЬНО?»
  10. ДЕСЯТЬ ОБЫЧНЫХ ЖАЛОБ, КОТОРЫЕ ЛЕГКО ИСТОЛКОВАТЬ НЕПРАВИЛЬНО
  11. 4. «Зло» или наказание за то, что может быть «неправильным»
  12. Статья 231. Незаконный сбор с целью использования или использование сведений, составляющих коммерческую или банковскую тайну
  13. 12.3.3. Совместное путешествие
  14. ДЕЯТЕЛЬНОСТЬ СОВМЕСТНАЯ
  15. 3. Проекты совместного внедрения