Настройка CPU Affinity не прилипает
Я пытаюсь установить сходство mysql (последний Percona Server) на VPS 4vCpu, виртуализированном с 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 часов я перезагружался с моим текущим провайдером.
Есть ли четкая причина, почему это не работает, или требуется больше устранения неполадок?
2 ответа
Маски привязки к процессору игнорируются внутри контейнеров OpenVZ. Вы не сможете заставить это "работать".
В ядрах на основе RHEL5 у нас было понятие виртуального процессора: задачи были запланированы на vcpus, в то время как vcpus каким-то образом были распределены между физическими процессорами. Системный вызов sched_setaffinity может быть использован для привязки задач к vcpus.
Эта концепция была громоздкой и часто неоптимальной, поэтому в RHEL6 мы решили отказаться от нее: в настоящее время установка лимита nr_cpus для контейнера фактически эквивалентна установке cpulimit. Решение оправдано тем фактом, что последний планировщик Linux достаточно умен, чтобы собирать вместе активно взаимодействующие задачи, так что нет необходимости искусственно ограничивать параллелизм.
В результате поддержка сродства процессора была прекращена. Задачи все еще могут использовать системный вызов sched_setaffinity, но он будет игнорироваться.
Инструмент как taskset
вероятно, не будет работать должным образом в контейнере. Вы можете сделать это из хост-системы, но это не имеет смысла изнутри контейнера.
Смотрите: Taskset не работает должным образом в контейнере OpenVZ