Назад | Перейти на главную страницу

Настройка соответствия ЦП не работает

Я пытаюсь установить привязку mysql (последний сервер Percona) к 4vCpu VPS, виртуализированному с помощью OpenVZ и работающему под CentOS 6.x.

Я выполняю команду taskset -pc 0-1 1026. Я также пробовал 0,1 вместо. Результат:

pid 1026's current affinity list: 0-3
pid 1026's new affinity list: 0-3

Так что «прилипания» не похоже. Это можно подтвердить, снова запустив набор задач, чтобы найти процессор, доступный для процесса. Возможно, это проблема моего типа виртуализации?

Я делаю это, потому что время от времени мне нужно, чтобы mysql работал довольно интенсивно, и переход на 2.0–4.0 более 2 часов дает мне перезапуск с моим текущим провайдером.

Есть ли четкая причина, по которой это не работает, или требуется дополнительное устранение неполадок?

Маски сродства ЦП игнорируются внутри контейнеров OpenVZ. Вы не сможете заставить это "работать".

В ядрах на основе RHEL5 у нас было понятие виртуального процессора: задачи планировались на виртуальном процессоре, в то время как виртуальный процессор каким-то образом распределялся между физическими процессорами. Системный вызов sched_setaffinity можно было бы использовать для привязки задач к vcpus.

Эта концепция была громоздкой и часто неоптимальной, поэтому в RHEL6 мы решили отказаться от нее: в настоящее время установка ограничения nr_cpus для контейнера фактически эквивалентна установке cpulimit. Решение обосновано тем, что последний планировщик Linux достаточно умен, чтобы собирать вместе активно взаимодействующие задачи, так что нет необходимости искусственно ограничивать параллелизм.

В результате была прекращена поддержка привязки ЦП. Задачи могут по-прежнему использовать системный вызов sched_setaffinity, но он будет проигнорирован.

Инструмент вроде taskset вероятно, не будет работать в контейнере. Вы можете сделать это из хост-системы, но это не имеет смысла изнутри контейнера.

Видеть: Набор задач не работает должным образом в контейнере OpenVZ