Перейти к содержимому
Local
bot

MySQL с MyISAM и патчи от Meltdown

Рекомендованные сообщения

Появилось сообщение, о том что наблюдается потеря производительности в 90% после обновления Linux ядра на сервере, которое теперь содержит KPTI (kernel page-table isolation - защита от Meltdown)

 

Такие большие потери связаны с запуском MariaDB на старой версии VMware, которая не пробрасывает PCID и INVPCID чипа гостю. Но в безвиртуальной системе удалось добиться регресса в 40%.

 

Тестовые условия:
----------------------------------
CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 INT) ENGINE=MyISAM;
INSERT INTO t1 (c2) VALUES (FLOOR(1000*RAND()));
INSERT INTO t1 (c2) SELECT FLOOR(1000*RAND()) FROM t1;
-- повторять последнее действия пока не станет хотя бы 1024 строки в t1

SELECT COUNT(*) FROM t1 AS a JOIN t1 AS b WHERE b.c1>a.c1 AND b.c2<a.c1;
----------------------------------

 

Теперь смотрим время SELECT с KPTI и без:
----------------------------------
rows    non-KPTI    KPTI         regression
1024    0.40 s        0.64 s        37.5%
2048    1.24 s        1.94 s        36.1%
4096    4.22 s        7.05 s        40.1%
8192    16.10 s      26.92 s      40.2%
----------------------------------

Для 8K строк запрос делает более чем 50млн вызовов Handler_read_rnd_next. Для MyISAM этот вызов возвращается вызовом fget(), который в свою очередь возвращается системным вызовом __fget.

 

Так происходит из-за того, что у движка MyISAM нет кеша строк. В Key Buffer кешируется индекс страниц, а кеша данных строк нету.
Поэтому движок полагается на кеш операционной системы. Это хорошо работает, но, т.к. кеш находится в ядре, то получается, что между MariaDB и и кешем есть системный вызов (syscall).

 

Изоляция табличных страниц, представленная в KPTI, увеличила нагрузку при системном вызове (syscall). Поэтому вышеуказанная схема, где большое количество MyISAM строк перебираются циклом, работает очень медленно. И замедление только увеличивается, если строка уже находится в кеше.

 

Как это побороть? - Никак, т.к. это потребует полного редизайна MyISAM.

 

Хорошая новость заключается в том, что большинство других движков имеют свой кеш строк. У InnoDB это InnoDB Buffer Pool, а у ARIA - ARIA Page Cache.

 

Вот пример выполнения нашего теста для ARIA со стандартным кешем в 128мегабайт:
----------------------------------
rows    non-KPTI         KPTI
1024    0.18 s             0.18 s
2048    0.57 s             0.57 s
4096    1.85 s             1.84 s
8192    6.34 s             6.30 s
----------------------------------

 

Мораль сей басни такова: переезжайте на другой движок и убедитесь, что кеш строк достаточно велик.

 

Источник: mariadb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: freehost
      Описание вакансии
      На постоянную работу в хостинг-компанию требуется сотрудник на первую линию службы технической поддержки. Офис расположен в Киеве.
       
      Обязанности:
      Отвечать на вопросы клиентов (работа с панелью управления, настройка POP3, SMTP, FTP) по телефону, эл. почте, решать мелкие проблемы (неверно заполненные данные и настройки в контрольной панели, проблемы с доступом и т. п.), сортировка заявок абонентов.
       
      Требования:
      - Умение работать в Интернет с основными клиентами (браузеры: IE и Mozilla, почтовые клиенты: The bat, outlook, FTP-клиенты: IE, Far, Cute FTP;
      - Иметь представление о том что такое HTML, PHP, MySQL
      - Скорость печати на клавиатуре не ниже 100 знаков в в минуту
      - Грамотное владение русским и украинским языком
      - Коммуникабельность, терпение, эмоциональная уравновешенность, способность к обучению.
      - Желание учиться
       
      Условия:
      Официальное трудоустройство
      24 дня отпуска
      Обеды за счет компании
      Рабочий график с 9 до 18 с понедельника по пятницу
      Оплачиваемый больничный
      Возможность повышения
       
      ЗП от 8 000. Пишите в личку.
    • Автор: bot
      Специалисты в области безопасности разработали метод эксплуатации уязвимостей класса Spectre, присутствующих во всех современных процессорах, через подключение по сети. Все ранее описанные атаки Spectre предполагали локальное выполнение произвольного кода для извлечения из памяти или приложений важной информации, такой как пароли, ключи шифрования и прочие конфиденциальные данные. Однако команда исследователей из Грацкого технического университета (Австрия) разработала новый вариант атаки Spectre, позволяющий удаленно извлечь данные по сети без необходимости выполнения произвольного кода.

      Метод, получивший название NetSpectre, был успешно протестирован в рамках локальной сети и на виртуальных машинах в Google Cloud. Хотя в теории атаки NetSpectre могут представлять существенную угрозу, в действительности извлечение данных происходит довольно медленно. В частности, в ходе кеш-атак по сторонним каналам скорость составляла всего 15 бит/ч, а при использовании нового скрытого канала, основанного на времени исполнения инструкций AVX2, - 60 бит/ч. В экспериментах в Google Cloud ученым удалось извлечь данные с виртуальной машины со скоростью 3 бита/ч.

      Новая техника может использоваться не только для удаленного извлечения данных, но и для обхода технологии ASLR (Address Space Layout Randomization, случайное распределение адресного пространства), отметили исследователи.

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

      Днями ранее исследователи из Калифорнийского университета опубликовали подробности о новом методе SpectreRSB, эксплуатирующем компонент Return Stack Buffer, вовлеченный в процедуру спекулятивного выполнения. Одна из его основных особенностей заключается в возможности обхода патчей против атак класса Spectre. Хотя на сегодняшний день нет информации о реальных атаках с использованием уязвимостей Spectre/Meltdown, эксперты в области безопасности усиленно работают над методами защиты от подобных атак.

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

      Address space layout randomization (ASLR) — применяемая в операционных системах технология, при использовании которой случайным образом изменяется расположение в адресном пространстве процесса важных структур, а именно: образа исполняемого файла, подгружаемых библиотек, кучи и стека.

      Источник: securitylab
       
      Комментариев:
    • Автор: bot
      Компания Intel опубликовала сведения о новой уязвимости (CVE-2018-3665) в механизме спекулятивного выполнения инструкций, которая получила кодовое название LazyFP. Проблема затрагивает только процессоры линейки Intel Core и проявляется при использовании "ленивого" (lazy) режима переключения контекста FPU, при котором реальное восстановление состояния регистров производится не сразу после переключения контекста, а только при выполнении первой инструкции, которая манипулирует восстанавливаемыми регистрами. На чипах Intel Atom/Knights и CPU AMD проблема не проявляется.

      Уязвимости присвоен средний уровень опасности (CVSS 4.3 из 10) - через проведение атаки по сторонним каналам атакующий может определить значения регистров FPU, MMX, SSE, AVX и AVX-512, используемых другим процессом. Например, в данных регистрах могут содержаться параметры для криптографических вычислений и имеющий доступ к локальной системе злоумышленник может попытаться использовать их для определения ключа шифрования. При использовании систем виртуализации проблема может применяться для определения состояния регистров другой гостевой системы или другого процесса в текущей гостевой системе.

      По своей сути уязвимость LazyFP близка к обнародованной в конце мая проблеме Spectre 3a (CVE-2018-3640, RSRE - Rogue System Register Read). Публикация детального описания атаки отложена до августа по просьбе представителей Intel, чтобы дать пользователям время для установки исправлений. В качестве меры для блокирования уязвимости рекомендуется разработчикам ОС перейти от использования режима Lazy FP к режиму Eager FP через установку соответствующих флагов XSAVE или XCR0. Предложенный метод защиты не оказывает негативного влияния на производительность.

      В ядре Linux защита была реализована ещё в феврале 2016 года, путём применения по умолчанию режима Eager FP (eagerfpu=on) и удаления возможности активации Lazy FP. Уязвимость затрагивает ядра Linux до версии 4.6 или системы с процессорами без поддержки инструкции XSAVE (до Sandy Bridge), в которых по умолчанию применялся режим Lazy FP. В старых ядрах Linux для защиты можно использовать опцию "eagerfpu=on", которая присутствует начиная с ядра 3.7. Обновления пакетов с ядром подготовлены для Debian и ожидаются для Ubuntu, SUSE/openSUSE и RHEL (RHEL 7 подвержен уязвимости частично, так как уже использует по умолчанию режим переключения контекста Eager FP на CPU Intel Sandy Bridge и более новых системах). Патчи с устранением проблемы также приняты в кодовые базы FreeBSD, OpenBSD и DragonflyBSD. Отдельно исправления выпущены для гипервизора Xen.

      https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00145.html

      Источник: Opennet
×