domingo, 24 de novembro de 2019

Informações importantes da sua cpu no Linux pelo terminal


No Linux em modo texto existe duas maneiras para obter informações da sua cpu, sendo elas o arquivo /proc/cpuinfo e o comando lscpu, sendo que este último fornece algumas informações a mais além de ser mais  compreensíveis.

Obtendo as informações da cpu pelo arquivo /proc/cpuinfo


Ao usar o comando cat /proc/cpuinfo se você tiver uma cpu de dois ou mais núcleos todas mesmas opções se repetirão nas cpus seguintes, por exemplo o 1º núcleo é sempre processor: 0, o 2º núcleo é sempre processor: 1, o 3º núcleo é sempre processor: 2 e assim sucessivamente.

No exemplo abaixo é uma cpu Intel Celeron de 2 núcleo (2 core) também chamada de dual core.

$ cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Celeron(R) CPU G1820 @ 2.70GHz
stepping : 3
microcode : 0x19
cpu MHz : 1032.440  (veloc. atual da cpu do núcleo 1)
cache size : 2048 KB (cache de último nível)
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer xsave rdrand lahf_lm abm invpcid_single kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust erms invpcid xsaveopt dtherm arat pln pts
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs
bogomips : 5398.30
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Celeron(R) CPU G1820 @ 2.70GHz
stepping : 3
microcode : 0x19
cpu MHz : 905.712 (veloc. atual da cpu do núcleo 2)
cache size : 2048 KB (cache de último nível)
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer xsave rdrand lahf_lm abm invpcid_single kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust erms invpcid xsaveopt dtherm arat pln pts
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs
bogomips : 5398.30
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:


Obtendo as informações da cpu com o comando lscpu

$ lscpu
Arquitetura:        x86_64         (info1)                 
Modo(s) operacional da CPU:32-bit, 64-bit (info2) 
Ordem dos bytes:       Little Endian
CPU(s):      2                    (info3)
Lista de CPU(s) on-line:0,1
Thread(s) per núcleo: 1   (info4) 
Núcleo(s) por soquete: 2
Soquete(s):       1      (info5) 
Nó(s) de NUMA:     1
ID de fornecedor:      GenuineIntel
Família da CPU:     6
Modelo:          60
Nome do modelo:        Intel(R) Celeron(R) CPU G1820 @ 2.70GHz     (info6)
Step:           3
CPU MHz:               833.203         (info7)
CPU MHz máx.:         2700,0000   (info8)
CPU MHz mín.:         800,0000     (info9)
BogoMIPS:              5398.30
Virtualização:       VT-x                  (info10)
cache de L1d:          32K
cache de L1i:          32K
cache de L2:           256K
cache de L3:           2048K
CPU(s) de nó0 NUMA:   0,1
Opções:              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer xsave rdrand lahf_lm abm invpcid_single kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust erms invpcid xsaveopt dtherm arat pln pts

Onde:

info1 = Arquitetura do seu sistema instalado. Neste exemplo é um sistema de 64 bits instalado que possuir suporte a programas de 32 bits (x86_64) deste que você tenha instalado as libs de compartibilidade. Se o sistema instalado for de 32 bits será exibido i686.

info2 = A cpu pode trabalhar  tanto com S.O. de 32 ou 64 bits que estiver instalado.

info3 = 2 núcleos ou 2 cores 

info4 = como esta cpu é um dual core ( dois núcleo) então você tem 2 threads

info5 = um processador físico real apenas instalado

info6 = fabricante, tipo, modelo e clock comercial

info7 = velocidade atual da cpu, pode mudar constantemente conforme o governador

info8 = velocidade máxima da cpu, valor fixo, apenas informativo

info9 = velocidade mínima da cpu, valor fixo, apenas informativo

info10 = suporte a virtualização de S.O. (VT-x para cpu Intel e AMD-V para cpu AMD)

Notas

As velocidades em CPU MHz são exibidas sempre em MHz e não em GHz.

A velocidade em CPU MHz: pode ser 1/3 da sua velocidade máxima, ou a metade ou outro valor diferente da máxima conforme o tipo do seu processador e o governador utilizado automaticamente pra controle do clock.

Não se preocupe, se a velocidade da sua cpu estiver muito abaixo da máxima, pois quando for executado tarefas pesadas ela rodará na velocidade máxima. 

Caso deseja controlar a velocidade manualmente ou fazer ela rodar sempre no máximo ou sempre no mínimo (ideal para notebooks) existe comandos para isto no seu sistema.

Sobre os caches

O caso L1  é sempre composto por duas partes, um de instrução e outro de dados, no exemplo acima você tem no total 64K de cache L1 (32K de instrução e 32K de dados).

O cache L2 é o cache intermediário da cpu.

O cache L3 é o cache de último nível da cpu.

A informação da quantidade de cache é sempre em K (kbytes) que no arquivo /proc/cpuinfo é mostrada com KB que é exatamente o mesmo valor apenas outra forma da abreviação de kbytes.

Cpus muitos antigas ou então se existir algum modelo recente em que não exista o cache L3, o cache L2 neste caso passa a ser o "cache de  último nível".

Quando mais "cache de último nível" tiver sua cpu melhor será o desempenho do seu computador, seja ele um L2 ou L3,  mas  dependendo  do uso  destinado ao  computador outros fatores também são muito importantes no desempenho, como tipo do processador, clock, e quantidade de memória RAM.

Em Opções: são os recursos que seu processador suporta.