Estou instalando recentemente uma distribuição e quero configurar uma partição swap para que seja compatível com a hibernação.
Primeiro, devo determinar a quantidade de memória física que o sistema possui.
$ grep MemTotal /proc/meminfo
MemTotal: 38740876 kB
Agora pelo que eu sei:
- 1 KiB = 1 kibibyte = 1024 bytes
- 1 kB = 1 kilobyte = 1000 bytes
No entanto, os documentos do RHEL aqui dizem que a unidade /proc/meminfo
está em kibibytes.
Quem está errado? A unidade codificada no Linux ou a documentação do RHEL?
Tanto "kilobyte" quanto "kB" também são usados algumas vezes para indicar unidades binárias (1024 bytes). Esse uso é bem anterior à invenção de prefixos binários "kibi-" dedicados, especialmente em contextos onde as verdadeiras unidades decimais fariam pouco ou nenhum sentido.
Por exemplo, o uso de RAM é sempre medido em unidades binárias (por exemplo, uma "página de 4kB" é sempre 4096 bytes, nunca 4000), então os prefixos "kilo-" ou "mega-" mais familiares são normalmente usados mesmo se os tamanhos reais forem binário.
No seu caso (verifiquei o código do kernel que cria o
/proc/meminfo
arquivo), o kernel conta internamente a memória em termos de páginas livres (que normalmente são 4k ou 16k, mas sempre em potência de dois) e suashow_val_kb()
função usa uma operação de deslocamento de bits (que é equivalente a uma multiplicação por potência de dois, produzindo unidades binárias novamente) para converter a contagem de páginas em um valor de kilobyte:(Nos sistemas x86 e x86_64 PAGE_SHIFT é sempre 12, então uma página de memória é
1 << 12
bytes igual a 1×2 12 ou seja 4096, e a função acima acaba multiplicando a contagem de páginas por 2 (12−10) antes de exibi-la como " kB".)As ferramentas de particionamento de disco 'lsblk' e 'fdisk' do util-linux também funcionam com unidades binárias por padrão. Por exemplo,
+2G
em fdisk é equivalente a+2GiB
. (No entanto, o fdisk também aceita+2GB
se você quiser uma partição de tamanho decimal por algum motivo.)Pelos comentários, parece que você tem a impressão de que a unidade
kB
significa 1000 bytes e que, se você quisesse dizer 1024 bytes, teria que escreverKiB
.Mas não é assim que é usado na computação.
kB
sempre significou 1024 bytes e praticamente ainda significa.A palavra "kibibyte" e o símbolo da unidade
KiB
foram introduzidos pela IEC em 1998 em uma tentativa bem intencionada de esclarecer que ok
/K
inkB
/KB
não é um prefixo SI .Na prática, no entanto, eles raramente são usados e, além da capacidade do disco rígido (por razões de marketing), você pode assumir
kB
com segurança que significa 1024 bytes ("1 kilobyte"), especialmente em softwares lançados antes de 1998.