Acabei de ler aqui :
- até 128TiB de espaço de endereço virtual por processo (em vez de 2GiB)
- Suporte à memória física de 64TiB em vez de 4GiB (ou 64GiB com a extensão PAE)
Por que é que? Quero dizer, o suporte à memória física está sendo limitado pelo kernel ou pelo hardware atual?
Por que você precisaria o dobro do espaço de memória virtual do que a memória física que você pode realmente endereçar?
debian
linux-kernel
virtual-memory
gsi-frank
fonte
fonte
Respostas:
Esses limites não vêm do Debian ou do Linux, eles vêm do hardware. Arquiteturas diferentes (processador e barramento de memória) têm limitações diferentes.
Nos atuais processadores x86-64 para PC, a MMU permite 48 bits de espaço de endereço virtual . Isso significa que o espaço de endereço está limitado a 256 TB. Com um bit para distinguir os endereços do kernel dos endereços da terra do usuário, isso deixa 128 TB para o espaço de endereço do processo.
Nos atuais processadores x86-64, os endereços físicos podem usar até 48 bits , o que significa que você pode ter até 256 TB. O limite aumentou progressivamente desde a introdução da arquitetura amd64 (de 40 bits, se bem me lembro). Cada bit de espaço de endereço custa alguma lógica de fiação e decodificação (o que torna o processador mais caro, mais lento e mais quente), para que os fabricantes de hardware tenham um incentivo para manter o tamanho baixo.
O Linux permite apenas endereços físicos de até 2 ^ 46 (portanto, você só pode ter até 64 TB) porque permite que a memória física seja totalmente mapeada no espaço do kernel. Lembre-se de que existem 48 bits de espaço de endereço; um bit para o kernel / usuário deixa 47 bits para o espaço de endereço do kernel. Metade disso, no máximo, endereça a memória física diretamente, e a outra metade permite que o kernel mapeie o que for necessário. (O Linux pode lidar com a memória física que não pode ser mapeada na íntegra ao mesmo tempo, mas isso introduz complexidade adicional, por isso é feito apenas em plataformas onde é necessário, como x86-32 com PAE e armv7 com LPAE.)
É útil que a memória virtual seja maior que a memória física por vários motivos:
fonte
Não sei por que, mas posso pensar em sete razões pelas quais seria útil suportar o dobro do espaço de endereço que a memória física.
fonte
Essas são limitações de hardware. O hardware x86_64 / amd64 atual permite endereços virtuais de 48 bits e vários tamanhos (depende da implementação - por exemplo, minha estação de trabalho aqui suporta apenas 36 bits) endereços físicos. O kernel do Linux divide o espaço de endereço virtual pela metade (usando metade para o kernel e metade para o espaço do usuário - exatamente como no x86).
Então você obtém:
2⁴⁸ bytes ÷ 2 = 2⁴⁷ bytes = 128 TiB
O tamanho do endereço físico geralmente é menor porque é realmente físico. Ele ocupa pinos / pads, transistores, conexões etc. na / na CPU e linhas de rastreamento na placa. Provavelmente também o mesmo nos chipsets. Não faz sentido suportar uma quantidade de RAM que é inconcebível durante a vida útil do design do núcleo ou soquete do processador - todas essas coisas custam dinheiro. (Mesmo com 32 slots DIMM e DIMMs de 64GiB em cada um, você ainda está apenas com 2TiB. Mesmo que a capacidade DIMM dobre anualmente, estamos a 5 anos do 64TiB.
Como Peter Cordes aponta, as pessoas agora estão conectando armazenamento não volátil, como o 3D XPoint, ao barramento de memória, o que torna possível a falta de espaço de endereço. Os processadores mais recentes estenderam o espaço de endereço físico para 48 bits; é possível que o wiki Debian não tenha sido atualizado.
fonte
clflush
eclflushopt
.