Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Частота процессора


Автор: Dogevec 20.11.2010, 23:55
Доброго времени суток. Пользуюсь Madrake на SPARC процессоре. Требуется узнать тактовую частоту процессора. Вот содержимое /proc/cpuinfo

cpu        : Texas Instruments, Inc. - MicroSparc
fpu        : SuperSparc on-chip FPU
promlib        : Version 3 Revision 2
prom        : 2.12
type        : sun4m
ncpus probed    : 1
ncpus active    : 1
BogoMips    : 448.92
MMU type    : TI Viking/MXCC
contexts    : 65536
nocache total    : 5242880
nocache used    : 1019904

Может есть способ расчитать по BogoMips ?

grep так же не даёт информации по частоте...

Автор: wladF 21.11.2010, 10:14
Попробуйте например здесь
dmidecode -t processor

Насколько понял из strace, данные берутся из /dev/mem

Автор: MAKCim 21.11.2010, 12:20
http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/init/calibrate.c#L177
448 = loops_per_jiffy / (500000 / HZ)
HZ берется из /usr/include/asm-generic/param.h

у меня к примеру BogoMIPS = 4787.87 (core i5 M520, 2.4Ghz)
HZ = 100
4787 = loops_per_jiffy / 5000
loops_per_jiffy = 23935000
т. е. это количество операций за 1 jiffy = 1 / HZ сек., т. е. за 10 мс.
итого за 1 сек. количество операций 23935000 * 100 = 2393500000 = ~2.4Ghz, что соответствует спецификации

после всех упрщений
частота (hz) = BogoMIPS * 500000
т. е. у вас это где-то 225Mhz

Автор: Dogevec 21.11.2010, 19:04
ОС говорит, что команда demicode неизвестна((
Благодарю за формулу. Но я читал, что HZ может иметь значения помимо 100, ещё 33 и 66, но не понял, от чего зависит и когда какое используется?
И, пожалуйста, поясните, в уравнении 448 = loops_per_jiffy / (500000 / HZ) почему именно 500000 ?

Автор: Dogevec 21.11.2010, 23:21
Кстати, нашёл более лёгкий способ получить значение HZ посредством вызова функции sysconf( _SC_CLK_TCK );

Автор: MAKCim 22.11.2010, 13:42
Цитата(Dogevec @  21.11.2010,  19:04 Найти цитируемый пост)
И, пожалуйста, поясните, в уравнении 448 = loops_per_jiffy / (500000 / HZ) почему именно 500000 ?

я привел ссылку на код из ядра, который вычисляет BogoMIPS, возвращаемый потом через /proc/cpuinfo
почему разработчики выбрали 500000 не в курсе ;)

после упрощений HZ сокращается, т. е. знать значение не обязательно
остается BogoMIPS * 500000


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)