Оптимизация шины что такое шины

Влияние загрузки шины данных на масштабируемость приложений

В этой статье я расскажу о том, как загруженность шины данных влияет на масштабируемость (scalability) приложений. Под масштабируемостью мы будем понимать не только способность многопоточного приложения сокращать свое время выполнения по мере увеличения числа потоков. Мы также добавим сюда и способность однопоточного приложения, запущенного одновременно в несколько копий (instances), выполняться за тот же самый промежуток времени, что и одна копия. Хотя последний пример было бы правильнее охарактеризовать таким свойством как пропускная способность (throughput), так как он относится к «серверному» режиму запуска приложений. Т.е. это такой режим, при котором на сервере запускается однопоточное приложение, каждый раз когда к нему подключается новый клиент. Главная задача при разработке таких приложений — это снижение их зависимости от общих ресурсов, одним из которых может являться шина данных.

Ниже приведена картинка, на которой показано положение шины памяти в системе. Слева изображена схема для «допотопной» архитектуры Core 2, справа для менее старой — Nehalem. Все последующие архитектуры Intel имеют схожую схему с Nehalem (за исключением Intel MIC).

Оптимизация шины что такое шины

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

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

Оптимизация шины что такое шины

Будем запускать эту программу с разным количеством потоков и разным параметром STEP. Параметр STEP соответствует утилизации КЭШ-линии. Мы помним, что процессор обменивается с памятью порциями по 64 байта, которые называются КЭШ-линиями. Если нам нужно прочитать всего лишь один байт, процессор все равно скачает из памяти 64 байта. Такой обмен данными происходит из-за принципа пространственной локальности. Это первый принцип, который лежит в основе КЭШ. Процессор как бы предполагает, что если мы считали какое-то значение массива из памяти, то на следующем шаге нам понадобиться считать следующее значение из того же массива. Поэтому важно размещать данные как можно ближе друг к другу, чтобы снизить нагрузку на шину. Таким образом, при STEP = 1, утилизация КЭШ-линии составляет 100%, при STEP = 4, утилизация – 25%, STEP = 8, утилизация – 12,5% и при STEP = 64, утилизация – 1,56%. Фактически, последний параметр означает закачивание новой КЭШ-линии на каждой итерации внутреннего цикла.

Еще одно замечание: тестовая программа была собрана компилятором Intel с опцией –no-vec, чтобы получить скалярный код вместо векторного. Это было сделано с целью получения «красивых данных» для облегчения понимания теории.

Оптимизация шины что такое шины

На этом графике отображено время выполнения нашего приложения в зависимости от тестируемых параметров. Мы видим, что по мере того, как ухудшается утилизации КЭШ-линии (параметр STEP), масштабируемость, т.е. отношение времени для меньшего числа потоков ко времени для большего числа потоков, тоже становится хуже.
Теперь посмотрим, как меняется нагрузка на шину данных в зависимости от тестируемых параметров. Нагрузку мы будем измерять с помощью VTune Amplifer, используя анализ «Bandwidth».

Читайте также: Шина компьютера виды шин

Оптимизация шины что такое шины

Мы видим, что одновременно с ухудшением масштабируемости нагрузка на шину возрастает. Объяснение здесь простое – потокам всё больше требуется КЭШ линий и в силу ограниченности шины им приходится всё дольше и дольше простаивать в ожидании данных. Это и является причиной ухудшения масштабируемости. Также важно отметить, что значение нагрузки с какого-то момента перестает существенно изменяться и постепенно приближается к некоторому значению, которое называется пиковая нагрузка. В нашем случае пиковая нагрузка равна 19 Гб/сек.

Теперь рассмотрим что такое принцип временной локальности. Это еще один принцип, который лежит в основе КЭШ и говорит он следующее: если мы считали какой-то элемент из памяти, то, скорее всего, мы обратимся к этому элементу еще раз через какое-то время. Для демонстрации этого принципа возьмем самый плохой случай, где утилизация КЭШ-линии составляет 1,56%. Применим для этого случая обход цикла по блокам, не нарушая целостности данных и сохраняя семантику программы.

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

Оптимизация шины что такое шины

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

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

Теперь давайте ответим на главный вопрос этой статьи: «А как понять, что слабая масштабируемость приложения вызвана именно высокой загрузкой шины данных?».
Для ответа на этот вопрос мы должны проделать следующие шаги используя VTune Amplifer:

  1. Измерить пиковую нагрузку для шины данных в нашей системе
  2. Выяснить, как меняется загрузка шины в зависимости от увеличения числа потоков нашего приложения
  3. Если мы видим, что при увеличении числа потоков, нагрузка на шину быстро достигает пиковых значений (измеренных в п.1), то в этом и кроется причина наших бед (плохой масштабируемости). При этом мы должны понимать, что есть еще другие причины (например false-sharing), которые мы уже проверили.

Для определения пиковой нагрузки возьмем тестовую программу из первого примера с параметром STEP = 64.

Оптимизация шины что такое шины

На всякий случай рекомендую собирать эту программу без опции межпроцедурного анализа. Ее достаточно будет скомпилировать просто с опцией –O2. Здесь нужно учесть, что размер массивов не должен превышать размер оперативной памяти, иначе на измерения может оказать влияние paging операционной системы. Количество потоков должно быть не меньше количества ядер, а если включен Hyper-Threading, то оно должно быть не больше числа hardware потоков. Число повторений (REPEAT) может быть любым, главное, чтобы тест выполнялся существенное время и VTune выдавал одинаковое значение пропускной способности от запуска к запуску.

А теперь рассмотрим пример из реальной жизни. Возьмем приложение 470.lbm из пакета SPEC CPU2006. Это одна из версий известного метода для решения задач гидродинамики (полное название Lattice Boltzmann Method). Данная версия написана таким образом, чтобы сместить баланс нагрузки с процессора на шину памяти. Запустим приложение на двухсокетном сервере на базе Nehalem и посмотрим на масштабируемость.

Читайте также: Рекомендованные шины для ниссан альмера классик

Оптимизация шины что такое шины

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

Теперь взглянем на горячий цикл этого приложения.

Оптимизация шины что такое шины

Мы видим, что в нем нарушен принцип «пространственной локальности», т.е. в 19 массивов записываются модифицированные элементы из массива srcGrid (запись в массив dstGrid с большими смещениями для процессора всё равно, что запись в разные массивы). Самая главная проблема этого приложения – непоследовательная запись с шагом 20 элементов. Такая сложная запись обусловлена специфической структурой данных. Дело в том, что в процессе выполнения приложения один куб трансформируется в другой, и каждый элемент этого куба является структурой из 20 элементов типа double. Т.е. фактически мы имеем дело с массивом структур, хотя явно они не объявлены.

Оптимизация шины что такое шины

Для того, чтобы сделать запись линейной, нужно применить классическую оптимизацию, которая называется «трансформация массива структур в структуру массивов». О том, как применять эту оптимизацию можно почитать в статье «Optimization Study for Multicores. Muneeb Anwar Khan». После применения оптимизации и разбивки записи на блоки (для улучшения работы hardware prefetcher’ов) мы имеем следующий цикл:

Оптимизация шины что такое шины

Оптимизация шины что такое шины

Мы видим, что масштабируемость улучшилась благодаря уменьшению нагрузки на шину. Хотя нужно признать что время выполнения приложения в один поток немного увеличилось. Это связано с тем, что при трансформации данных нам пришлось добавить еще 19 массивов для srcGrid, а это увеличило нагрузку на hardware prefetcher. Интересный результат получается при запуске однопоточной версии этого приложения в восемь копий, т.е. в «серверном» режиме. (Приложение было собрано без опций распараллеливания.)

Оптимизация шины что такое шины

Одновременное выполнение восьми однопоточных копий на восьми ядрах занимает 252 секунды, что меньше чем восемь последовательных запусков многопоточной версии, которые выполняются 8 * 37 = 296 секунды. Это говорит о том, что в многопоточной версии существуют какие-то алгоритмические проблемы, связанные с распараллеливанием. Но это уже другая история.

Видео:Оптимизация ШИНЫ или как ОТБАЛАНСИРОВАТЬ колесо с МИНИМУМ ГРУЗИКОВСкачать

Оптимизация ШИНЫ или как ОТБАЛАНСИРОВАТЬ колесо с МИНИМУМ ГРУЗИКОВ

Сколько грузиков должно быть на колесе?

Колеса большего диаметра не определены ГОСТом, это означает, что для них также будет нормален максимальный вес балансировочных грузиков в 300 грамм на колесо (150 грамм на одну сторону), и, следовательно, такую шину не считают бракованной.

Видео:Технарь. Как оптимизировать дисбаланс диска шиной Режим Opt при балансировке колеса на станках СТОРМСкачать

Технарь. Как оптимизировать дисбаланс диска шиной Режим Opt при балансировке колеса на станках СТОРМ

Сколько грамм грузиков допускается на одно колесо?

На новом колесе с новым диском, навешиваемая масса грузиков, не должна превышать 60 грамм. Если масса навешиваемого груза больше — необходимо убедиться в правильной сборке колеса или найти причину невозможности выполнения правильной балансировки (изношенная покрышка, погнутый диск).

Видео:Оптимизация шины и дисбалансаСкачать

Оптимизация  шины и дисбаланса

Почему много грузиков на диске?

Дело в том, что шина и диск по отдельности каждые имеют свой дисбаланс. Диск имеет свой дисбаланс, а покрышка свой. Если при надевании резины на диск совпадет так, что самые тяжелые стороны диска и шины совпадут, то получится так, что на какую-то сторону диска придется навешивать слишком много грузиков.

Видео:Шиномонтаж Брест: Руль не бьет! Оптимизация удалась!Скачать

Шиномонтаж Брест:  Руль не бьет!   Оптимизация удалась!

Какая должна быть балансировка колес?

Вес грузика для балансировки колеса с нормальной геометрией не должен быть больше 60 грамм. Если требуется грузик большей массы, то стоит проверить геометрию диска, правильную сборку диска и шины, и изношенность покрышки; Допустимое отклонение при повторной балансировке колеса автомобиля должно быть не больше 5 грамм.

Читайте также: Родные шины для нивы 2121 размер

Видео:УЗНАВ ЭТО ТЫ БОЛЬШЕ НИКОГДА НЕ БУДЕШЬ БАЛАНСИРОВАТЬ КОЛЕСА БЕЗ ПРОВЕРКИСкачать

УЗНАВ ЭТО ТЫ БОЛЬШЕ НИКОГДА НЕ БУДЕШЬ БАЛАНСИРОВАТЬ КОЛЕСА БЕЗ ПРОВЕРКИ

Нужно ли снимать старые грузики при балансировке?

Обязательно перед балансировкой снять старые грузики. Внесение в програму точных размеров диска.

Видео:Балансировка колеса. Оптимизация по грузамСкачать

Балансировка колеса. Оптимизация по грузам

Сколько грамм допускается при балансировке?

Колеса большего диаметра не определены ГОСТом, это означает, что для них также будет нормален максимальный вес балансировочных грузиков в 300 грамм на колесо (150 грамм на одну сторону), и, следовательно, такую шину не считают бракованной.

Видео:Функционал СТОРМ: Оптимизация дисбаланса покрышкойСкачать

Функционал СТОРМ: Оптимизация дисбаланса покрышкой

Как правильно делать балансировку?

Раскручивая колесо на станке, периодически перемещая свинцовые грузики на диске, мастер добивается максимально случайного его положения в момент остановки. Таким образом, делается грубая балансировка колёс. Более точная балансировка производится с помощью электронного станка, в которую вносятся параметры колеса.

Видео:Оптимизация шин, как балансировать колеса?Скачать

Оптимизация шин, как балансировать колеса?

Нужно ли мыть колеса перед балансировкой?

Нужно ли мыть колеса перед балансировкой

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

Видео:Оптимизация шины относительно диска.Скачать

Оптимизация шины относительно диска.

Можно ли отбалансировать кривой диск?

восьмерку на диске отбалансировать невозможно.. как собсно и невозможно её заработать. если, конечно вы таки умудритесь не просто погнуть борт диска так, чтоб его нельзя было прокатать, а так, чтоб винтом ушел весь диск, а потом еще и приноровившись загерметизируете места неприлегания покрышки…

Видео:НЕ покупай Шины Nexen N'Blue HD Plus пока НЕ узнаешь ЭТО! Реальный опыт использованияСкачать

НЕ покупай Шины Nexen N'Blue HD Plus пока НЕ узнаешь ЭТО! Реальный опыт использования

Как правильно делать балансировку колес?

Как правильно балансировать колесо.

  1. После ввода параметров колеса, нажимаем кнопку «Страт».
  2. После остановки колеса, устанавливаем балансировочные грузики. В зависимости от типа колеса наклеиваем их или набиваем. На литые диски грузики наклеивают, а на штампованные набивают. Грузики клеятся в места указанные станком.

Видео:Вот так выглядит правильная балансировка колес! Детальный разбор процессаСкачать

Вот так выглядит правильная балансировка колес! Детальный разбор процесса

Что будет если не делать балансировку колес?

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

Видео:Оптимизация легковой шины по статическому дисбалансу.Скачать

Оптимизация легковой шины по статическому дисбалансу.

Как правильно отбалансировать колесо в домашних условиях?

Как самому отбалансировать колесо при помощи конуса

  1. Закрепить конус строго по центру колеса.
  2. Уложить колесо на выступ (например, пенек) острием конуса.
  3. На ту сторону колеса, которая выше, ложим грузик.
  4. Немного раскачать колесо и дождаться, пока оно остановится.

Видео:переобувка, балансировка и оптимизация шины и диска.Скачать

переобувка, балансировка и оптимизация шины и диска.

Что такое оптимизация шины?

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

Видео:устраняем биение шиныСкачать

устраняем биение шины

Как влияет балансировка колес?

На что влияет балансировка колес? Балансировка связана с удобством передвижения на транспортном средстве – несбалансированные колеса вызывают вибрацию, которая не очень приятна для водителя, также ускоряется износ шин, дисков и подвески. Следовательно, балансировка влияет и на правильную работу подвески.

Видео:Покрышка с деформациейСкачать

Покрышка с деформацией

Как понять что плохая балансировка?

На машине при плохой балансировке колес будет ощущаться биение руля на скорости. Обычно бьет руль на скорости свыше 60 км/ч и до 120 км/ч. Потом, при увеличении скорости машины, биение руля может пропадать. А также, если есть дисбаланс колеса, то вибрация будет передаваться по всему кузову автомобиля.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле
    • Правообладателям
    • Политика конфиденциальности

    🎬 Видео

    Как правильно установить шины?Скачать

    Как правильно установить шины?

    Что означает МАРКИРОВКА НА ШИНАХ / Значение всех цифр и букв на резинеСкачать

    Что означает МАРКИРОВКА НА ШИНАХ / Значение всех цифр и букв на резине

    Балансировка колес. Что это такое? Как часто нужно делать?Скачать

    Балансировка колес. Что это такое? Как часто нужно делать?

    Секрет балансировки колёс, о котором не все знают!!!Скачать

    Секрет балансировки колёс, о котором не все знают!!!

    СЕКРЕТ БАЛАНСИРОВКИ КОЛЁССкачать

    СЕКРЕТ БАЛАНСИРОВКИ КОЛЁС
Поделиться или сохранить к себе:
Технарь знаток