Por que vale a pena instalar um sistema operacional de 64 bits no Raspberry Pi4

imagem

Um dos benefícios de trabalhar para uma empresa de software é que você geralmente tem a oportunidade de testar novos protótipos de hardware. No entanto, não neste caso - eu comprei um Raspberry Pi4 porque é muito barato!

O Raspberry Pi4 possui um ARM Cortex A72 de quatro núcleos, até 4 GB de memória e uma porta Ethernet de gigabit - tudo por apenas US $ 35.

No Raspberry Pi4 temos o OS Raspbian (baseado no Debian) e a biblioteca de produtos acabados, então eu o coloquei no cartão SD para inicializar mais rapidamente. Pesquisei o syslog e notei que o kernel e todos os programas do usuário foram compilados como armv7 - ou seja, para memória de 32 bits.

Eu sei que o Raspberry Pi4 suporta 64 bits, então eu não queria executar um sistema operacional de 32 bits nele. Peguei outro cartão de memória e coloquei o Debian nele. O Debian, que não contém nada de supérfluo, compilado como aarch64 - o que significa memória de 64 bits.

Depois de baixar o sistema operacional de 64 bits, fiquei interessado em saber como ele funciona melhor em 32 bits, por isso realizei vários testes.

Ensaios de velocidade sintéticos


A primeira coisa que me ocorreu foi o antigo teste dhrystone, que existe desde o início dos tempos. Este programa foi escrito em 1988 e lida com cálculos matemáticos. É improvável que seja capaz de simular a carga atual, e podemos usá-la apenas para manter algum tipo de conectividade com hardware e programas antigos.



Um aplicativo de resumo moderno é melhor simulado por hashes de computação, então eu queria executar um teste com SHA1. Infelizmente, o utilitário sha1sum foi compilado sem suporte para funções libssl ou criptográficas do kernel, então tive que compilá-lo a partir da fonte.

Para evitar gargalos na E / S, calculo um hash de um arquivo de 2 GB com a opção truncar -s 2GB, para que não haja entrada ou saída do cartão:



O SHA1 é um teste mais realista do que o dhrystone, porque esse algoritmo é usado em um grande número de aplicativos - torrents, git etc.

RAM


Um sistema de 64 bits fornece acesso à memória de 8 bytes por leitura / gravação. Eu escrevi um programa simples que coloca um buffer grande - ela escreve e depois lê. Para garantir a alocação de memória real, usei mlock (). Nesse teste, o volume do buffer é de 2 GB: o buffer de 3 GB funcionou no modo de 64 bits e, no modo de 32 bits, gerou um erro de "falta de memória".



Codificação de áudio


Percebi que muitos usuários do Raspberry Pi4 usam um computador como uma central de mídia, então comecei a tarefa de codificar o áudio com os dois codecs mais populares.

Eu codifiquei a composição "Echoes" do Pink Floyd porque é uma faixa bastante longa e você pode obter valores medidos a partir dela. Para evitar atrasos de E / S, o arquivo de origem e destino foi armazenado no ramfs:





Medições de velocidade da rede


Outra opção para usar o Raspberry Pi4 é como uma VPN ou firewall. Eu não recomendo usar esses sistemas para tais fins, mas muitas pessoas ainda têm uma conexão lenta à Internet (menos de 100 MB), portanto, podem não prestar atenção à operação lenta do Raspberry Pi4.

Primeira pergunta: quanto tráfego o Raspberry Pi4 suporta? Precisamos medir a potência líquida da rede do computador, sem as limitações das interfaces físicas, então iniciei a sessão do iperf3 entre os dois contêineres. No entanto, os contêineres trocam dados por meio de um par de veths, e veth acelera o tráfego através de descargas falsas.

O descarregamento do cálculo da soma de verificação IP é feito simplesmente recusando-se a contá-lo e o descarregamento da segmentação TCP, recusando-se a segmentar e remontar o tráfego: uma grande parte dos dados de 64K é simplesmente transferida para a memória como está.

Para evitar esses momentos, proibi o descarregamento com o comando

ethtool -K veth0 tx off rx off tso off gro off gso off



Firewall


O equipamento de rede mais rápido é capaz de - eliminar parte do tráfego, e a maneira mais rápida de fazer isso é através da regra do TC. Para não atingir a velocidade máxima possível, usei o tamanho mínimo de quadro Ethernet, 64b.



Embora ambos os sistemas não tenham atingido a velocidade máxima de transferência (1,5 Mb / s), o núcleo de 64 bits mostrou uma velocidade um pouco maior que o de 32 bits. Se você deseja usar o Raspberry Pi4 como um firewall, use o kernel de 64 bits.

VPN


Outro caso de uso comum para o Raspberry Pi4 é um servidor VPN, ou melhor, OpenVPN. Como prefiro o WireGuard, verifiquei os dois programas porque são fáceis de instalar:



Como esperado, o OpenVPN é 10 vezes mais lento que o WireGuard. O que não era esperado era que o OpenVPN funcionasse na mesma velocidade em 32 e 64 bps. O WireGuard quase satura a porta gigabit nos dois casos - talvez tenhamos atingido o limite da NIC.

Para descobrir se o WireGuard poderia funcionar ainda mais rápido, fiz outro teste com dois contêineres que não usavam Ethernet física. O único problema era que o cliente e o servidor iperf3 estavam em execução no Raspberry Pi4, carregando dois núcleos.



Como esperado, o OpenVPN e o WireGuard de 32 bits, limitado pela CPU, tiveram um desempenho pior e o WireGuard de 64 bits teve um desempenho melhor.

Conclusões


Costumo ler declarações como “não vale a pena”, “você ganhará alguns milissegundos” etc., simplesmente porque o Raspberry Pi4 não é um computador muito poderoso. Isso não é verdade! Como qualquer pessoa envolvida em equipamentos embarcados sabe, a otimização lenta do software de hardware é ainda mais importante do que o hardware rápido.

Eu já sabia que um sistema operacional de 64 bits funcionaria melhor no Raspberry Pi4, mas não sabia o quanto melhor. Então eu fiz todos esses testes. Espero que tenha gostado!

All Articles