Я собираюсь настроить сервер базы данных (MySQL) в контейнере OpenVZ, и мне было интересно, сколько процессоров я должен назначить для него. Я решил сравнить его. Я сравнил два дистрибутива OS / MySQL и проверил, как они работают с 1, 2, 3 и 4 процессорами.
Первая конфигурация программного обеспечения была:
- CentOS релиз 6.5 (финал)
- mysql Ver 14.14 Distrib 5.1.71, для redhat-linux-gnu (x86_64) с использованием readline 5.1
Второй:
- Debian GNU / Linux 7 \ n \ l
- mysql Ver 14.14 Distrib 5.5.31, для debian-linux-gnu (x86_64) с использованием readline 6.2
Оба работали на одном и том же ядре - 2.6.32-openvz-042stab083.2-amd64 # 1 SMP пт 8 ноября 17:59:25 MSK 2013 x86_64 GNU / Linux.
Все программное обеспечение было установлено из пакетов и использовалось без каких-либо настроек.
Аппаратное обеспечение: 6 ГБ ОЗУ, 1-4 ЦП 3,5 ГГц.
Для тестирования я использовал sysbench со следующим сценарием:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
В обоих случаях движок стола был InnoDB.
Результат, на который я смотрел, был числом транзакций в секунду. Результаты были достаточно стабильными - ошибка была менее 1%.
Результаты были хорошими и ожидаемыми для CentOS / MySQL5.1, но очень странными для Debian / MySQL5.5:
Как вы можете видеть, MySQL5.5 в Debian не может должным образом использовать преимущества нескольких процессоров. Хотя производительность с 2 процессорами выше, чем с 1, она явно ниже, чем в CentOS / MySQL5.1. Более того, он падает, когда мы добавляем больше процессоров поверх 2, что действительно странно.
Может кто-нибудь объяснить, что там происходит? Почему на Земле MySQL будет работать хуже, когда мы добавляем процессоры?
источник
Ответы:
Не взорвать чей-то пузырь догадок, но это ошибка в MySQL 5.5 .
источник
Что ж, это действительно главный вопрос, не зная сначала что-то об архитектуре, которую вы используете ... но, как правило, экспоненциальный удар по пропускной способности шины при добавлении процессорной мощности, особенно архитектуры, которая поддерживает несколько многоядерных процессоров, просто остановитесь и подумайте немного последствия для цикла прерываний при любом установленном ограничении пропускной способности шины ... в любом случае производительности ... понимая, что ваша архитектура будет либо узким местом ввода-вывода, либо битами на цикл, снова имейте в виду, что для нескольких процессоров требуется многопоточность ... поэтому независимо от скорости вашей FSB ... если у вас аппаратное обеспечение только 64-битное, то физическое электрическое соединение должно будет разделить это ограничение на столько ядер в одном такте ...Теперь остановитесь и подумайте о положительных последствиях перехода с 64-разрядной системной платы на 256-разрядную. При полном наклоне пропускная способность может увеличиться в 3 раза, учитывая, что x1 будет потрачен на многопоточность / поддержание накладных расходов на работу. Однако во время обычных операций могут возникнуть неудобная реальность, связанная с накладными расходами, когда вам нужен только один процессор / оператор. Я думаю, это уравновешивающее действие или, точнее, правильная лошадь для правильного курса. Steveo Reedo nextfriend@live.co.ukЯ думаю, это уравновешивание или, точнее, правильная лошадь для правильного курса. Steveo Reedo nextfriend@live.co.ukЯ думаю, это уравновешивание или, точнее, правильная лошадь для правильного курса. Steveo Reedo nextfriend@live.co.uk
источник
Когда вы добавляете процессоры, эта вещь будет выполнять больше операций параллельно. Если вы не увеличили количество ОЗУ, то может произойти подкачка, особенно если вы используете более толстую (а в большинстве случаев более толстую) версию тестируемого программного обеспечения.
источник