Согласно всем источникам, которые я читал (openvz wiki, различные списки рассылки, форумы, ...), значения параметров cpuunits относятся друг к другу. Таким образом, когда все равны и система занята, все получают одну и ту же долю ЦП.
Но кое-что меня все еще озадачивает: почему существует инструмент vzcpucheck, который показывает «мощность узла / хоста»:
Current CPU utilization: 18000
Power of the node: 880001
Зачем (мне нужно) абсолютное число, когда все настройки относительны?
Разве эти две настройки не должны приводить к одному и тому же результату?
ve1: 1
ve2: 1
ve3: 1
= 3
ve1: 293334
ve1: 293334
ve1: 293334
= 880001 (power of the node)
Какая разница?
Модули ЦП имеют приоритет ЦП. Приоритет ЦП вступает в игру, когда нескольким учетным записям VPS требуется больше, чем общая вычислительная мощность ЦП, доступная в любой данный момент.
Примером могут быть две гипотетические учетные записи VPS, VPS-A с 800 модулями ЦП и VPS-B с 400 модулями ЦП. Если обе учетные записи VPS запрашивают 100 процентов ресурсов ЦП одновременно, VPS-A получит вдвое больше процессорного времени, чем VPS-B, поскольку 800 в два раза больше, чем 400.
VPS все еще может получить 100% ЦП, если это не требуется другим учетным записям VPS на аппаратном узле, но этот процент упадет, как только другому VPS потребуется процессорное время.
Таким образом, если вы хотите создать систему, в которой контейнеры действительно получают гарантированный необходимое количество ЦП, чтобы не допустить превышения лимита подписки, и внимательно подсчитайте количество CPUUNIT в сравнении с мощностью узла. Мощность узла позволяет вычислить, сколько стоит один CPUUNIT (если вы не превышаете подписку). например, компьютер с частотой 3 Гц и 30 модулями ЦП будет означать, что 1 блок стоит 0,1 ГГц (это не реальные числа). Таким образом, вы можете использовать это как руководство, если для одной виртуальной машины требуется 1 ГГц, а другой - выделенная частота 1,5 ГГц, используйте 10 и 15 соответственно. Просто убедитесь, что вы не выделяете в общей сложности более 30 единиц ЦП, иначе 10 больше не являются гарантией 1 ГГц.
Мощность узла действительно решает эту проблему: Два процессора с тактовой частотой 3 ГГц могут не выполнять одинаковое количество вычислений в секунду. из-за достижений в технологии / различных архитектур. Таким образом, разные узлы могут обрабатывать больше или меньше контейнеров, даже если они имеют одинаковую частоту ЦП. Вот почему Amazon рекламирует вычислительные возможности в единицах ECU, а не в ГГц.
Возможно, вам будет проще использовать cpulimit, который представляет собой процентную долю ЦП, которую контейнер не может превышать. Если у вас два ядра, приемлемо значение до 200%. Однако предыдущая настройка больше похожа на «выделенный ЦП с пакетом», тогда как в этом случае проще просто настроить «выделенный ЦП» (но вам все равно нужно убедиться, что вы не переоцениваете свои проценты)
Поскольку блоки ЦП следует читать как «гарантированные блоки ЦП». Это проясняет истинное значение.
Каждый VE может потенциально иметь всю мощность узла за вычетом всей мощности ЦП, гарантированной для всех остальных виртуальных сред.