Я пытаюсь установить привязку 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