Utilização de CPU em sistemas Linux multi-thread

O Hyper-threading (HT) é uma tecnologia da Intel introduzida nos processadores Xeon em 2002 que permite que um núcleo do processador execute mais de uma thread de uma única vez.

O Hyper-threading simula dois processadores lógicos em um único núcleo de processador físico. Recursos do processador físico como cache de memória, unidade lógica e aritmética, barramentos, são compartilhados entre os processadores lógicos. Naturalmente, os processadores lógicos competem por estes recursos e ficam aguardando se as unidades desejadas já estiverem sendo usadas.

Apesar de simular dois processadores lógicos, o Hyper-threading não oferece o dobro de desempenho como um núcleo físico. Segundo a Intel, o aumento de desempenho é de até 30%, dependendo da configuração do sistema. Os ganhos são mais expressivos em ambientes multitarefa.

O kernel Linux enxerga o processador lógico, correspondente a thread adicional do Hyper-threading, como um núcleo tradicional. Por exemplo, um processador com 6 núcleos e Hyper-threading habilitado totaliza 12 núcleos.

O problema é que as ferramentas padrões de monitoramento das distribuições Linux (top, mpstat, vmstat, etc) consideram que todos os processadores têm o mesmo desempenho e não refletem os efeitos colaterais do compartilhamento de recursos do Hyper-threading.

Supondo que 6 processos single-thread estejam em execução neste sistema, considerando que cada um utilize 100% de um núcleo do processador, as ferramentas de monitoramento irão mostrar o total de utilização de processamento em 50%. Entretanto, como sabemos que as threads não oferecem desempenho similar aos dos núcleos, este percentual está incorreto.

Não há uma maneira simples de resolver este problema. Outros sistemas operacionais, como o AIX, calcula o percentual total fazendo aproximações com base no desempenho estimado de cada thread. Especificamente no Linux é importante não tratar os valores de processamento de forma isolada quando estiver realizando o monitoramento e estabelecer um threshold para o percentual total abaixo de 70%.

Referências:

Continuar lendo


RDO: Distribuição RPM do OpenStack

OpenStack é um projeto Open Source para construir e gerenciar nuvens públicas ou privadas no modelo conhecido como infrastructure-as-a-service (IaaS).

Tentando traduzir para quem não está acostumado com o vocabulário da computação em nuvem, pode-se dizer que o OpenStack fornece os componentes de software para disponibilizarmos serviços semelhantes aos principais serviços da Amazon AWS (EC2, S3, RDS, dentre outros), tanto para fornecê-los para terceiros (nuvem pública), como para uso interno (nuvem privada).

Continuar lendo


Atualização dinâmica do kernel Linux

É comum administradores Linux se vangloriarem da estabilidade de seus servidores dizendo que eles não foram reiniciados nos últimos anos. O uptime do sistema é uma espécie de medalha conseguida a duras penas na guerra santa entre os sistemas operacionais da Microsoft e o Linux.

Enquanto os sistemas operacionais da Microsoft carregam o fardo do seu passado sombrio de instabilidade, o Linux mantém fama oposta. Mas até que ponto não reiniciar o sistema por um longo período de tempo é algo a ser comemorado?

Se por um lado isto demonstra algumas virtudes do sistema operacional, por outro revela que o administrador de sistemas não está preocupado com a segurança de seus servidores. Falhas são encontradas com alguma frequência no kernel Linux, e uma atualização neste componente exige a reinicialização do sistema.

Continuar lendo


Compactação de memória com o zswap

A memória swap é um elemento importante do gerenciamento de memória no Linux, mas sua utilização, quando notada, geralmente é acompanhada de uma penalidade considerável no desempenho, e por vezes é necessário reiniciar todo o sistema. Por esse e outros motivos, alguns administradores de sistemas não ortodoxos questionam sobre a real necessidade de um dispositivo swap.

Poucas alternativas de configuração são populares: desabilitar totalmente o swap e deixar que o kernel sacrifique alguns processos em uma eventual falta de memória (OOM Killer), ou simplesmente utilizar um disco mais rápido para o dispositivo de swap, como, por exemplo, discos SSD.

Agora disponível no Red Hat Enterprise Linux 7 (e clones), o zswap aparece como uma alternativa sensata e econômica que promete dar novo estímulo ao uso da memória swap.

Continuar lendo


Usando discos SSD para cache no LVM

O LVM cache é um novo recurso do LVM que permite criar um volume lógico com um dispositivo mais rápido e capacidade reduzida (por exemplo, um disco SSD) para ser usado como cache para um dispositivo com maior capacidade, porém, mais lento, aumentando significativamente o desempenho dos sistemas de arquivos em cargas de I/O específicas e mantendo a capacidade de armazenamento dos discos magnéticos tradicionais.

Continuar lendo