MySQL имеет поддержку больших страниц / hugetlb для InnoDB. И там много постов (пример) по теме.
Но есть ли у кого-нибудь примеры того, какие изменения производительности они видели?
Я видел, как другие системы баз данных увеличивают производительность от использования hugetlb. Например. проприетарное распределенное хранилище ключей и значений mmapped с помощью nosql. Магазин будет замедляться, когда размер файла mmapped превысит 0,5 ГБ. Он не сильно ухудшился даже после 2 или 3 ГБ.
Наблюдение было по линии; если мы сохранили активные пользовательские сеансы, и, например, в. На 100 пользователей у нас было 32MB данных, скорость чтения будет X записей / сек. При 3000 пользователей у нас будет около 1 ГБ, а скорость чтения снизится до X / 2. Скорость чтения охватывает как поиск хэша, так и копирование данных. Весь доступ был локальным для машины, поэтому это было копирование из памяти в память.
Теперь, если пользователи вышли из системы, файл данных хранилища останется прежним, даже если пространство key / val уменьшится до 32 МБ, хэш-таблицы будут повторно загружены и т. Д. Но скорость чтения осталась на уровне X / 2 и не увеличивалась.
Оказалось, что это были промахи в кэше TLB, и использование hugetlb / large страниц означало, что скорость останется около X, даже когда пользователи будут приближаться к 10000, а файл становится все больше и больше.
Это здорово и все такое. И теперь инстинкт подсказывает мне, что MySQL должен иметь те же характеристики, что и возможность hugetlb / больших страниц. Но без некоторых примеров это трудно опробовать.
Итак, пробовал ли кто-нибудь использовать hugetlb / large pages для повышения производительности, и каков был ваш опыт (хороший / плохой / нейтральный)? Мне бы хотелось услышать как о размерах БД, так и о том, какие примерно изменения производительности вы заметили.
Номера приветствуются!
Это не пример MySQL, но я видел именно такое поведение в Oracle:
http://www.pythian.com/blog/performance-tuning-hugepages-in-linux/
Как указано в сообщении, посмотрите на /proc/meminfo
размером с PageTables. Если вы видите огромные потери ОЗУ для таблиц страниц, вы можете потратить значительное время ЦП на их управление.
В MySQL также есть некоторые примечания о том, как это реализовать и почему вам нужно:
http://dev.mysql.com/doc/refman/5.6/en/large-page-support.html
Приложения, которые выполняют много обращений к памяти, могут повысить производительность за счет использования больших страниц из-за уменьшения пропусков буфера Lookaside Buffer (TLB) трансляции.