В GNU/Linux, как я могу определить название модели моего процессора?
Я знаю несколько способов получения информации о моем процессоре в среде GNU/Linux, от cat /proc/cpuid
для различных утилит, см., например, здесь
Тем не менее, никто из них не говорит мне, как называется моя модель процессора. Я имею в виду, у меня есть (для обсуждения) Intel Pentium 4 530J. Но информация, которую я могу получить об этом, в основном: Производитель / Продавец, Семейное моделирование, Тактовая частота (ну, еще несколько полей, но этого должно быть достаточно, чтобы однозначно определить марку, я думаю).
В Windows у нас есть бесплатные (как в пиве) утилиты, такие как HWInfo, которые сообщают нам название бренда (в моем случае - где-то должно появиться число 530). Разве нет ничего похожего и для Linux?
Заметки:
- Ничего, требующего графического окружения, пожалуйста. Строго командная строка...
- HWInfo определяет процессор как "Intel Pentium 4 530J (Prescott, E0)". Это в основном то, что я хочу видеть.
2 ответа
Самый простой, родной будет cat /proc/cpuinfo|grep vendor_id
[geek@phoebe ~]$ cat /proc/cpuinfo | grep vendor_id
vendor_id : GenuineIntel
vendor_id : GenuineIntel
(Его напечатано дважды, потому что это двухъядерная система)
Интересно, что это не работает с моим распи, который имеет совсем другой формат
Я не думаю, что он предустановлен во многих дистрибутивах, но lshw тоже подойдет. Использовать -class cpu
флаг, чтобы просто выгрузить соответствующую информацию
sudo lshw - класс процессора *-ЦПУ описание: процессор Продукт: Celeron (заполнить OEM) Производитель: Intel Corp. физический идентификатор: 34 информация об автобусе: процессор @0 версия: Intel(R) Celeron(R) CPU N2807 с частотой 1,58 ГГц слот: розетка 0 размер: 1960 МГц емкость: 2400 МГц ширина: 64 бита часы: 83 МГц
Кроме того, это не работает на моем Raspberry Pi также не так. Однако это должно соответствовать x86 boxen.
Эквивалентное имя поставщика AMD для lshw - Advanced Micro Devices (AMD), а считывание /proc/cpuinfo для vendor_id - AuthenticAMD.
(Вы можете найти полный список vendor_ids здесь)
Короче говоря, флаг поставщика должен идентифицировать "бренд", а флаг продукта - как продаваемый продукт.
Ну, в Википедии есть пример (только для x86_64) листинга сборки для этой цели:
.section .data
s0 : .asciz "Processor Brand String: %.48s\n"
err : .asciz "Feature unsupported.\n"
.section .text
.global main
.type main,@function
.align 32
main:
pushq %rbp
movq %rsp, %rbp
subq $48, %rsp
pushq %rbx
movl $0x80000000, %eax
cpuid
cmpl $0x80000004, %eax
jl error
movl $0x80000002, %esi
movq %rsp, %rdi
.align 16
get_brand:
movl %esi, %eax
cpuid
movl %eax, (%rdi)
movl %ebx, 4(%rdi)
movl %ecx, 8(%rdi)
movl %edx, 12(%rdi)
addl $1, %esi
addq $16, %rdi
cmpl $0x80000004, %esi
jle get_brand
print_brand:
movq $s0, %rdi
movq %rsp, %rsi
xorb %al, %al
call printf
jmp end
.align 16
error:
movq $err, %rdi
xorb %al, %al
call printf
.align 16
end:
popq %rbx
movq %rbp, %rsp
popq %rbp
xorl %eax, %eax
ret
Скопируйте этот код в файл, скажем cpumodel.S
и скомпилируйте его с помощью gcc/gas:
gcc cpumodel.S -o cpumodel
После этого вы можете запустить его:
$ ./cpumodel
Processor Brand String: Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz
Этот метод, вероятно, не будет работать для вас, так как кажется, что процессоры Pentium 4/D не имеют названия своей модели, доступной таким образом. Как вы можете видеть здесь, данные CPUID не содержат то, что вы хотите.