Linux / Comando lscpu: interpretar CPUs lógicas, núcleos e cache
lscpu mostra a arquitetura da CPU reconhecida pelo Linux, a quantidade de CPUs lógicas, a organização em núcleos e soquetes e informações de cache. Use-o para entender a configuração visível ao sistema; o total de CPUs lógicas não é, por si só, a quantidade de núcleos físicos nem uma medida de desempenho.
CPU significa unidade central de processamento. Neste contexto, cada CPU lógica é uma unidade que o sistema pode identificar para execução; mais de uma pode corresponder ao mesmo núcleo físico. Lscpu reúne dados de sysfs, de /proc/cpuinfo e, conforme a arquitetura, de outras fontes. Em uma máquina virtual, os dados normalmente descrevem o que o sistema convidado recebeu, e não um inventário completo do hospedeiro físico.
Sintaxe e preparação
lscpu [opções]
Os colchetes descrevem opções e não devem ser digitados. Abra um terminal no Linux que deseja consultar. Lscpu faz parte de util-linux; confira command -v lscpu, lscpu --version, lscpu --help e man lscpu. As opções e colunas disponíveis dependem da versão e da arquitetura.
Os exemplos apenas consultam informações e não exigem sudo. Se o comando não estiver disponível, confira o pacote correspondente da distribuição. Um erro de comando não encontrado não é um resultado sobre a CPU.
Consultar a visão geral
lscpu
Comece pela arquitetura, pelo total CPU(s), pela lista de CPUs online e pelos campos de soquetes, núcleos por soquete e threads por núcleo, quando disponíveis. Um soquete corresponde à organização do processador apresentada pelo sistema; em uma máquina virtual, essa topologia pode ser virtual. Thread por núcleo, nessa saída, refere-se ao contexto de execução de hardware, e não ao número de threads de uma aplicação.
CPU(s) identifica o total de CPUs lógicas apresentado pelo sistema. Confira também quais estão online, isto é, disponíveis para escalonamento pelo sistema, e quais estão offline. Mesmo uma CPU online pode não estar disponível a determinado processo por restrições de afinidade ou do ambiente.
A arquitetura pode ajudar a conferir a plataforma de um programa, mas não comprova toda a compatibilidade de um pacote ou das instruções exigidas por ele. Para uma consulta mais curta de arquitetura e kernel, veja como interpretar uname.
Consultar informações por CPU
lscpu -e
A opção -e produz uma tabela para leitura humana. Por padrão, ela inclui CPUs online e offline, mas as colunas padrão podem mudar. Para relacionar CPU, núcleo, soquete e estado, selecione explicitamente as colunas em uma versão que as ofereça: lscpu -e=CPU,CORE,SOCKET,ONLINE. Não coloque espaços entre o sinal = e os nomes separados por vírgulas.
Compare as linhas e seus identificadores para entender quais CPUs lógicas pertencem à mesma organização de núcleos e soquetes. Não some números de identificação como se fossem quantidades, nem presuma que todo campo terá dados em qualquer arquitetura. Consulte a ajuda local para os nomes de colunas aceitos; um campo sem dados não deve ser preenchido com um valor inventado.
Consultar o cache
lscpu -C
Cache é uma memória usada pelo processador para reduzir o custo de acesso a dados e instruções. A opção -C detalha os caches e, conforme as informações disponíveis, sua organização e seu compartilhamento. Não multiplique automaticamente um valor de cache pelo número de CPUs lógicas: vários contextos de execução podem compartilhar o mesmo cache.
O manual registra mudanças de apresentação entre versões: antes de util-linux 2.34, o resumo mostrava tamanhos por núcleo; nas versões posteriores, os tamanhos do resumo são agregados. Desde 2.37, os identificadores de cache seguem os fornecidos pelo kernel e nem sempre começam em zero. Confira os campos e a versão antes de comparar números de saídas diferentes.
Distinguir CPU lógica, núcleo e soquete
Para visualizar somente o início da saída, a sequência abaixo limita a apresentação a oito linhas:
lscpu | head -n 8
O caractere | envia a saída de lscpu para head, que mostra apenas o começo. O corte pode omitir dados importantes e a ordem dos campos pode variar; ele não seleciona por significado os campos de arquitetura, núcleo ou soquete. Esta é uma seleção ilustrativa de campos, não uma promessa das primeiras oito linhas em toda versão:
Architecture: x86_64
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
- Architecture: arquitetura apresentada ao sistema.
- CPU(s): oito CPUs lógicas neste exemplo.
- Thread(s) per core: dois contextos de execução por núcleo nesta configuração ilustrativa.
- Core(s) per socket: quatro núcleos por soquete; esse campo não informa sozinho o total de soquetes.
Em uma configuração uniforme com um soquete, quatro núcleos por soquete e dois threads de hardware por núcleo, a conta seria 1 × 4 × 2 = 8 CPUs lógicas. Contudo, o trecho não mostra Socket(s) nem o estado online: confira a saída completa e a tabela por CPU antes de concluir a quantidade de núcleos físicos ou a capacidade disponível. Em hardware virtual, os próprios valores de topologia podem ser imprecisos; o manual de lscpu do projeto util-linux apresenta essa limitação.
Opções principais
| Opção | Uso |
|---|---|
-e |
Mostra uma tabela por CPU para leitura humana; inclui online e offline por padrão. |
-p |
Produz uma saída adequada para análise por programas; considera CPUs online por padrão. |
-C |
Mostra detalhes dos caches disponíveis. |
-a |
Inclui online e offline quando usado com -e ou -p. |
-J |
Usa JSON no resumo ou na saída estendida, nas versões compatíveis. |
Para um script, evite depender das colunas padrão ou das primeiras linhas do resumo. Uma consulta com colunas explícitas, como lscpu -p=CPU,CORE,SOCKET, define os campos e sua ordem. Se precisar incluir também as CPUs offline nesse formato, combine -a com -p. Verifique o formato efetivamente produzido pela versão instalada e trate cabeçalhos, comentários e campos sem dados conforme essa saída.
Máquinas virtuais, contêineres e desempenho
Na máquina virtual, lscpu geralmente descreve a configuração do convidado. Algumas arquiteturas também permitem mostrar informações físicas do hospedeiro, mas isso não torna todos os campos uma descrição confiável e completa do hardware físico. Não interprete automaticamente quatro núcleos virtuais como quatro núcleos físicos exclusivos.
No contêiner, a topologia exposta e o limite de uso são questões diferentes. Grupos de controle, chamados cgroups, podem restringir quais CPUs um processo usa ou quanto tempo de CPU um grupo recebe. Assim, o total visível no resumo não garante que o contêiner possa consumir simultaneamente toda essa capacidade.
A documentação oficial de cgroup v2 distingue a lista efetiva de CPUs permitidas, cpuset.cpus.effective, do limite de tempo por período configurado em cpu.max. Confira a configuração real do contêiner e do grupo ao avaliar recursos; não deduza a cota somente do número CPU(s).
Lscpu também não mede a utilização atual nem substitui um teste do trabalho que você pretende executar. Para observar processos e uso de CPU, consulte a leitura dos indicadores no comando top. Quantidade de CPUs, compartilhamento, memória, limites do ambiente e características da aplicação influenciam o resultado.
Erros e limites da verificação
Se -C ou uma coluna não for aceita, confira a ajuda e a versão local; não conclua que a máquina não tem cache ou núcleos. Se a listagem estiver incompleta, volte à consulta sem head e confira mensagens de erro. Em um pipeline do Bash, o status final pode ser o de head, mesmo quando lscpu falhou.
No ambiente disponível, Bash 5.3.9 do Git para Windows, lscpu não foi encontrado. As consultas diretas retornaram 127; o pipeline com head retornou 0, mas os estados dos componentes foram 127 para lscpu e 0 para head. Essa execução não produziu uma topologia válida. Houve apenas verificação adicional de sintaxe dos exemplos, sem execução nativa do Linux, leitura real de caches, medição de desempenho ou teste de limites de cgroups. Os quatro campos acima permanecem ilustrativos.
Pergunta frequente
CPU(s) é a quantidade de núcleos físicos?
Não. CPU(s) apresenta CPUs lógicas. Leia também os campos de núcleos, soquetes, threads e estado online, além da tabela por CPU. Em máquinas virtuais e contêineres, separe a configuração exposta da topologia física e dos limites efetivamente aplicados ao processo.




