вы молодец что скопировали с инета эти строчки,
ещё бы вы понимали, что они значат цены бы вам не было (нет)
текста много, но все интересное, советую прочитать все до конца, а что бы понять, лучше два раза.
передать частоту нет такой кнопки или функции.
в хостовой машине частота в /proc/cpuinfo показывается через привилегированные команды и драйвера по управлению питанием intel_pstate у интел, или acpi-cpufreq у амд и др.
если запустить на хостовой машине cpufreq-info |grep driver
driver: intel_pstate <-- вот драйвер откуда берутся частоты реальные
если запустить на хостовой машине cpufreq-info |grep frequency
current CPU frequency is 5.00 GHz. <---вот реальная частота. она же показывается и в /proc/cpuinfo
в linux контейнерах openvz, lxc, docker (что не является полноценными вдс по сути ) вывод /proc/cpuinfo как раз и осуществляется через систему на которой они запущены а именно через драйвера по управлению питанием и поэтому там можно увидеть реальную частоту процессора
в гостевой ОС с полноценной виртуализацией (kvm vmware heperv) конечно же такие драйвера просто не работают. Нельзя же допустить, что бы какая то виртуалка общим процессором командовала. Поэтому гипервизор зарезает виртуалке доступ к таким инструкциям, мол ничего не знаю нет у меня инструкций по управлению питанием, и драйвер естественно не находя их, не работает и потому и нет реальной частоты в гостевой ОС.
убеждаемся в этом, в гостевой ос запускаем cpufreq-info |grep driver
no or unknown cpufreq driver is active on this CPU
А когда нет такого драйвера, частоту ОС показывает равную частоте счетчика TSC.
счетчик TSC это счетчик тактов с момента включения процессора и логично измерив за интервал мы получим частоту процессора
читаем
Time Stamp Counter - Wikipedia
Recent Intel processors include a constant rate TSC (identified by the kern.timecounter.invariant_tsc sysctl on FreeBSD or by the "constant_tsc" flag in Linux's /proc/cpuinfo). With these processors, the TSC ticks at the processor's nominal frequency, regardless of the actual CPU clock frequency due to turbo or power saving states. Hence TSC ticks are counting the passage of time, not the number of CPU clock cycles elapsed.
означает, в современных процессорах TSC увеличивается на базовой частоте в не зависимости от реальных тактов процессора.
Наличие постоянного независимого счетчика TSC как раз и подтверждается флагом constant_tsc в /proc/cpuinfo в линукс и kern.timecounter.invariant_tsc в фриибсд
Если не делать оверклок или выключить турбобуст, а использовать только базовую частоту процессора, то частота TSC = ожидаемой вами частоте процессора.
НО на самом деле частота может немного плавать (например уменьшатся при avx или банально проц перегрелся и нужно не на долго снизить частоту, или энергосбережение включено )
а счётчику тактов TSC никак нельзя позволять плавать потому что:
источник
Глава 11. Управление временем виртуальных машин KVM
KVM использует счётчик тактов процессора TSC (Time Stamp Counter). Некоторые процессоры (старые) не поддерживают постоянную частоту счетчика, что негативно скажется на работе виртуальных машин на основе KVM. Неточности могут привести к замедлению или, наоборот, ускорению работы сетевых приложений, что изменить скорость работы самой виртуальной машины.
Потенциальные проблемы, связанные с неточностью часов и счётчиков процессора:
- Нарушение синхронизации часов может привести к несвоевременному завершению сеансов и сказаться на работе сети;
- Виртуальные машины с замедленными часами могут столкнуться с проблемами при миграции;
- Возможен сбой виртуальных машин.
поэтому его и сделали независимым, и при увеличении частоты процессора (оверклок или турбобуст) или уменьшении частоты (перегрев или энергосбережение) он остается работать на максимальной гарантированной для всех ядер частоте (3.6GHz а нашем случае), которая ниже номинальной (5 гигагерц в нашем случае)
есть такая команда процессора rdtsc, она показывает сколько тактов прошло с момента включения процессора). берем интервал времени, берем два измерения тактов через rdtsc и получаем частоту. логично
Если взять такой тест измерения частоты на основе rdtsc, запустить его хоть в хостовой хоть в гостевой машине мы получим частоту TSC которая как мы уже проняли отличается от частоты процессора при оверклоке или турбобусте
итого
код работает на одной частоте (5 гигагерц в нашем случае) а счетчик тактов TSC и соответсвенно все измерения основанные на нем , на на другой (3.6GHz а нашем случае).
Вот на скринах доказательства моих слов:
тесты делались на хостовой машине, обычной ноде с процессором 9900К. вывод результата из /proc/cpuinfo (которая использует драйвера intel_pstate) и вывод из программы calculate-cpu-speed (могу поделится СИ кодом ) которая считает частоту через команду rdtsc. Первый скрин в рабочем режиме performance, второй скрин в режиме экономии энергии. Как видно частоты процессора разные а подсчет через TSC не зависит от реальной частоты процессора (вывод у calculate-cpu-speed одинаковый). Если же на этой ноде зайти в вдску и там сделать тоже самое по логике вывод через /proc/cpuinfo = calculate-cpu-speed = частоте TSC
....и.....мы убеждаемся в этом на скрине номер 3.
получите, распишитесь.
e_zhuravlev надеюсь вы смогли внимательно прочитали и понять.
Если да, то вам теперь понятна абсурдность заявления о частоте в вдс которую вам хотелось бы увидеть в /proc/cpuinfo,
по сути вы хотели, что бы вдс могла управлять всем процессором. смотреть реальную частоту, уменьшать ее или увеличивать. поэтому в kvm этого нет, не будет, и не нужно делать.
как же посмотреть реальную частоту процессора внутри vds спросите вы. ответ: либо скриншотом с ноды, либо бенчмарки. И мы бежим сюда за результатами бенчей на независимой площадке которая и нас тоже тестировала
Рейтинг производительности VPS/VDS
PS
Видишь суслика?
– Нет.
– Вот и я не вижу. А он есть.