Каждый день в публичном облаке Yandex Cloud запускается огромное количество виртуальных машин (ВМ). В большинстве случаев на одном хосте одновременно существуют несколько ВМ, принадлежащих разным клиентам. В такой ситуации одной из задач провайдера облачных услуг является разделение ресурсов хоста между ВМ. Но позволяют ли современные процессоры на x86-64-архитектуре разделить и изолировать абсолютно всё?
Процессоры имеют внутренние ресурсы, которыми программист не имеет возможности управлять явно. Например, кэш и шина памяти. От их доступности может зависеть производительность приложений в ВМ. Но как понять, что производительность приложения снизилась именно из-за конкуренции ВМ за внутренние ресурсы процессора?
Этот доклад про увлекательное исследование в Yandex Cloud длиной в год, из которого вы узнаете о способах обнаружения проблем с производительностью приложений из-за конкуренции за кэш L3 и шину памяти.