Настройка 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

Другие вопросы по тегам