как узнать частоту процессора под линукс?

otvertka07

вопрос

Makc500

cat /proc/cpuinfo

vel1501

а это точно указывает реальную частоту проца? у меня показывает номинальную

otvertka07

спасибо!

dgaf

>cat /proc/cpuinfo
$ cat /proc/cpuinfo
cpu : TI UltraSparc IIi (Sabre)
fpu : UltraSparc IIi integrated FPU
prom : OBP 3.25.3 2000/06/29 14:12
type : sun4u
ncpus probed : 1
ncpus active : 1
D$ parity tl1 : 0
I$ parity tl1 : 0
Cpu0ClkTck : 000000001a39de00
MMU Type : Spitfire
DCPageFlushes : 14521
# cat /proc/cpuinfo
processor : 0
cpu model : MIPS 4KEc V4.8
BogoMIPS : 211.35
wait instruction : no
microsecond timers : yes
extra interrupt vector : yes
hardware watchpoint : yes
VCED exceptions : not available
VCEI exceptions : not available
:smirk:

dgaf

>а это точно указывает реальную частоту проца? у меня показывает номинальную
это что показывает?

#include <stdio.h>
#include <sys/time.h>
#define read_tsc(r) asm volatile("rdtsc":"=A" (r

int main(int argc, char **argv)
{
struct timeval a;
unsigned long start, end;
unsigned long mhz, low;
gettimeofday(&a, NULL);
read_tsc(start);
for (;;) {
unsigned long usec;
struct timeval b;
gettimeofday(&b, NULL);
usec = (b.tv_sec - a.tv_sec)*1000000;
usec += b.tv_usec - a.tv_usec;
if (usec >= 1000000)
break;
}
read_tsc(end);
end -= start;
mhz = end / 1000000;
low = end % 1000000;
printf("TSC: %lu.%06lu MHz\n", mhz, low);
return 0;
}

Vlad77

это что показывает?
гыгы
melchior:~$ gcc -o cpufreq cpufreq.c
melchior:~$ ./cpufreq
TSC: 18446744071808.445729 MH
а вот на двухядерном макбуке почему-то всегда нормально работает :(
О, редактировал пост, и на мельхиоре щастье привалило: TSC: 2393.863083 MHz

sergeikozyr

а сейчас позволь поинтересоваться твоим uname -a

Vlad77

melchior:~$ uname -a
Linux melchior 2.6.23.1-custom-nat SMP Thu Nov 15 00:01:39 MSK 2007 x86_64 GNU/Linux
ещё такой под рукой есть (core 2 duo, по идее):
osaka:~/Movies $ uname -a
Darwin osaka.local 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386

spitfire

гыгы
Кстати, аналогично.
 $ for i in `seq 1 20`;do ./cpufreq ; done
TSC: 1010.142680 MHz
TSC: 1808.274911 MHz
TSC: 18446744071223.390850 MHz
TSC: 1808.274801 MHz
TSC: 18446744071258.707893 MHz
TSC: 1828.061774 MHz
TSC: 1808.276154 MHz
TSC: 18446744071223.374572 MHz
TSC: 1824.170913 MHz
TSC: 18446744071222.859224 MHz
TSC: 1812.001673 MHz
TSC: 18446744071234.804752 MHz
TSC: 1808.274974 MHz
TSC: 1808.273986 MHz
TSC: 18446744071223.580245 MHz
TSC: 1808.275910 MHz
TSC: 18446744071222.859942 MHz
TSC: 1808.275243 MHz
TSC: 18446744071227.098127 MHz
TSC: 1808.274837 MHz

 $ uname -a
Linux magrathea.local 2.6.25-std-ll-alt8.M41.1 PREEMPT Sat Oct 11 02:12:00 MSD 2008 x86_64 GNU/Linux

juliuzz

это что показывает?

cpu.cpp: In function `int main(int, char**)':
cpu.cpp:10: error: `gettimeofday' undeclared (first use this function)
cpu.cpp:10: error: (Each undeclared identifier is reported only once for each function it appears in.)


>g++ --version
g++ (GCC) 3.4.2 (mingw-special)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Vlad77

Кстати, аналогично.
Тож двухядерник? А то в инете говорят на x86_64 нужно rdtsc по-другому делать.

sergeikozyr

да, на самом деле такое. x86_64, ядро 2.6.27

Vlad77

спасибо, аналогичное я и нашёл. А можешь объяснить, почему пиздец не наступает от того, что мы на другое ядро перепрыгнули? TSC одинаковый у всех ядер?

dgaf

да, на сколько я вижу, на x86 ядро поддерживает tsc одинаковым на всех cpus
оно даже его подкручивает, когда cpufreq выставляет разные частоты.

/*
* Intel systems are normally all synchronized.
* Exceptions must mark TSC as unstable:
*/
if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) {
/* assume multi socket systems are not synchronized: */
if (num_possible_cpus > 1)
tsc_unstable = 1;
}
гы

spitfire

Тож двухядерник?
Отнюдь, Sempron. Но x86_64.

kokto

Кстати, а как понять в линухе, в дуале работают планки памяти, или нет? :confused:

Vadim69

это надо понять не в линухе, а в биосе

kokto

В биосе не пишут явно, написан объем всей и используемой памяти, ну и тайминги разные. Может, биос такой убогий просто, не знаю.

dgaf

Насколько я вижу вооружённым grep глазом, ядро не владеет такой информацией.

kokto

Понятно. Спасибо за участие! :)

Barbie29

cat /proc/cpuinfo

BondarAndrey

man dmidecode
Узнаете много интересного

Ivan8209

I2C драйвер есть?
Если сможешь расшифровать, вот это может немного просветить:

iic0 at ichsmb0: I2C bus
spdmem0 at iic0 addr 0x52
spdmem0: DDR2 SDRAM memory, no parity or ECC, 256MB, 667MHz (PC2-5300)
spdmem0: 13 rows, 10 cols, 1 ranks, 4 banks/chip, 3.00ns cycle time
spdmem0: tAA-tRCD-tRP-tRAS: 5-5-5-15
spdmem0: voltage SSTL 1.8V, refresh time 7.8us

Но это отрывок из dmesg.boot на NetBSD 5.0_BETA.
---
...Я работаю...

kokto

Узнаете много интересного
Вот что нашел:

Handle 0x0007, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM_B1
Bank Connections: 2 3
Current Speed: 5 ns
Type: Unknown EDO
Installed Size: 1024 MB (Double-bank Connection)
Enabled Size: 1024 MB (Double-bank Connection)
Error Status: OK

Handle 0x0008, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM_B2
Bank Connections: 6 7
Current Speed: 5 ns
Type: Unknown EDO
Installed Size: 1024 MB (Double-bank Connection)
Enabled Size: 1024 MB (Double-bank Connection)
Error Status: OK

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM_A1
Bank Connections: 0 1
Current Speed: 5 ns
Type: Unknown EDO
Installed Size: 1024 MB (Double-bank Connection)
Enabled Size: 1024 MB (Double-bank Connection)
Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM_A2
Bank Connections: 4 5
Current Speed: 5 ns
Type: Unknown EDO
Installed Size: 1024 MB (Double-bank Connection)
Enabled Size: 1024 MB (Double-bank Connection)
Error Status: OK

kokto

Что-то ничего подобного в dmesg не нашел :confused:
Это было бы ответом на мой вопрос.

Ivan8209

> Что-то ничего подобного в dmesg не нашел
У тебя неправильный $(uname -rs).
---
A39: Сдуру можно много чего сломать

kokto

У мну

Linux 2.6.27.5-41.fc9.x86_64

Ivan8209

Я ж там написал, что правильный --- NetBSD 5.0_BETA.
Если линукс не поможет, собери ядро с spdmem(4 запихни его на
установочный диск и загрузись. Может, чего интересного увидишь.
---
"NetBSD is JIHBED!"

Ivan8209

Как вариант, просто собери ядро и загрузи его своим грубом.
---
"NetBSD is JIHBED!"

kokto

Да, пересобирать ядро для того, чтобы узнать впала ли память в двухканальный режим, это круто! :grin:

Ivan8209

> Да, пересобирать ядро для того, чтобы узнать впала ли память в
> двухканальный режим, это круто!
Почему сразу "круто"? Обычное дело.
Ты, вон, со своим люлехом до сих пор не понимаешь, как это сделать.
---
"NetBSD is JIHBED!"

Ivan8209

А так, за то время, которое ты уже потратил, ты уже это ядро
десяток раз пересобрал бы.
---
"NetBSD is JIHBED!"

Chupa

на самом деле, это даже круче, чем кажется на первый взгляд
поскольку узнать про двухканальность из SPD нельзя :grin:

kokto

О как! :grin:

kokto

В общем, как я понял, о дуальности памяти можно понять только из информации о начале загрузки, которая высвечивается сразу после включения компа и тестирования памяти.

conv3rsje

Непонятно, можно ли этому верить, но у меня dmidecode признается про каналы (лишнее выкинул):

# dmidecode 2.9
SMBIOS 2.4 present.

Handle 0x0017, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 8 GB
Error Information Handle: Not Provided
Number Of Devices: 4

Handle 0x0018, DMI type 17, 27 bytes
Memory Device
Size: 1024 MB
Form Factor: DIMM
Locator: J6H1
Bank Locator: CHAN A DIMM 0
Type: DDR2
Type Detail: Synchronous
Speed: 800 MHz (1.2 ns)

Handle 0x001A, DMI type 17, 27 bytes
Memory Device
Size: No Module Installed
Locator: J6H2
Bank Locator: CHAN A DIMM 1
Type: DDR2

Handle 0x001B, DMI type 17, 27 bytes
Memory Device
Size: 1024 MB
Form Factor: DIMM
Locator: J6J1
Bank Locator: CHAN B DIMM 0
Type: DDR2
Type Detail: Synchronous
Speed: 800 MHz (1.2 ns)

Handle 0x001D, DMI type 17, 27 bytes
Memory Device
Size: No Module Installed
Locator: J6J2
Bank Locator: CHAN B DIMM 1
Type: DDR2

Фтыкать в поля Locator и Bank Locator :)
Для сравнения тачка без каналов:

void:~# dmidecode -t 17 | grep -e '^[A-Z]' -e 'Locator' -e 'Size'
SMBIOS 2.3 present.
Handle 0x0026, DMI type 17, 23 bytes
Memory Device
Size: 512 MB
Locator: DIMM 1
Bank Locator: Not Specified
Handle 0x0027, DMI type 17, 23 bytes
Memory Device
Size: 512 MB
Locator: DIMM 2
Bank Locator: Not Specified
Handle 0x0028, DMI type 17, 23 bytes
Memory Device
Size: No Module Installed
Locator: DIMM 3
Bank Locator: Not Specified

kokto

Не знаю, мне кажется, что CHAN A DIMM 0 и т/д --- это просто названия слотов, зависящие от материнки (у меня это DIMM_B1, DIMM_B2 и т/д). Хотя сейчас ототкну одну планку, чтобы посмотреть, что изменится в информации :)

kokto

В общем, я поэкспериментировал --- у меня ничего в dmidecode не меняется, кроме того, что Not Installed.
А при загрузке при вынимании одного парного модуля пишет Single Channel, а при вытыкании и второго парного --- опять восстанавливается надпись Dual Channel после проверки памяти. В общем, сложилось впечатление, что обе пары работают в дуальном режиме :D

Marinavo_0507

Можно ещё на скорость последовательного доступа к памяти посмотреть, типа того, что memtest86 показывает.

kokto

Это как, засечь при загрузке, сколько времени биос мать проверяет? Че-то он долго у меня проверяет (4 гига всего лишь) --- минуты три что ли...
Оставить комментарий
Имя или ник:
Комментарий: