C++ Linux получает номинальную частоту процессора

Мне нужно получить номинальную частоту процессора под Linux в коде C++. Насколько я знаю, /proc/cpuinfo содержит текущую частоту.

Является /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

всегда надежен как номинальная частота в кГц?

Или есть лучший способ получить эту информацию из C++?

1 ответ

C++ не имеет никаких средств для доступа к этому значению, он даже не предполагает, что такое значение есть. Даже в вашем случае вы просто смотрите на один из процессоров, а не на все. Это означает, что вам придется делать что-то зависящее от ОС, что вы, вероятно, можете построить в C++.

Во всяком случае, вы знаете какой-либо инструмент, обеспечивающий этот номер? Получить его исходный код и посмотреть, как он это делает! Кроме этого, я бы посмотрел на /proc/cpuinfo и вывел среднее значение "CPU MHz". /proc файловая система в основном является предшественником /sys файловая система, но информация должна быть такой же.

Единого универсального способа считывания номинальной частоты не существует. Вы можете прочитать номинальную частоту из/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq (номинальная + 1 МГц) при использовании acpi-cpufreq драйвер масштабирования, однако intel_pstateустанавливает для содержимого этого файла максимальную частоту турбо. Тем не менее есть альтернативные решения. У ЦП Intel номинальная частота записывается как часть названия модели ЦП (читается с помощью инструкции CPUID при вводе EAX = 0x01 или из/proc/cpuinfo) или вы можете прочитать MSR_PLATFORM_INFO (0xCE) регистр.

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