Menor RAM disponível do que instalado no Centos 7

7

Não consigo descobrir por que tenho menos RAM utilizável do que o instalado. Estou executando 64bits Centos 7 com 1 módulo RAM de 4096MB em um Lenovo x230. Alguma informação da máquina em questão:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           2439        1129         172         124        1137         857
Swap:          2087          41        2046


$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)

$ uname -m
x86_64

$ dmidecode -t memory | grep -i size
    Size: 4096 MB
    Size: No Module Installed

$ lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Model name:            Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
Stepping:              9
CPU MHz:               1639.519
BogoMIPS:              5786.51
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              4096K
NUMA node0 CPU(s):     0-3

O BIOS mostra 4096MB de RAM a serem instalados.

$ dmesg | grep -C 3 -i mtrr
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] AGP: No AGP bridge found
[    0.000000] e820: last_pfn = 0x11e600 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFC00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask F80000000 write-back
[    0.000000]   2 base 080000000 mask FC0000000 write-back


$ dmesg | grep -C 3 -i e820
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-327.13.1.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Mar 31 16:04:38 UTC 2016
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-327.13.1.el7.x86_64 root=/dev/mapper/centos00-root ro crashkernel=auto rd.lvm.lv=centos00/root rd.lvm.lv=centos00/swap rhgb quiet LANG=en_ZA.UTF-8
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x0000000040003fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000040004000-0x0000000040004fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000040005000-0x000000008c0a0fff] usable
[    0.000000] BIOS-e820: [mem 0x000000008c0a1000-0x00000000dae9efff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000dae9f000-0x00000000daf9efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000daf9f000-0x00000000daffefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000dafff000-0x00000000df9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed08000-0x00000000fed08fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffc00000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000011e5fffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: LENOVO 2325SRQ/2325SRQ, BIOS G2ETA5WW (2.65 ) 09/17/2015
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] AGP: No AGP bridge found
[    0.000000] e820: last_pfn = 0x11e600 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
--
[    0.000000]   8 base 11E800000 mask FFF800000 uncachable
[    0.000000]   9 base 11E600000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] e820: last_pfn = 0x8c0a1 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000f0100-0x000f010f] mapped at [ffff8800000f0100]
[    0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
--
[    0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xffbfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xffc00000-0xffffffff]
[    0.000000] e820: [mem 0xdfa00000-0xf7ffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:5120 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
[    0.000000] PERCPU: Embedded 31 pages/cpu @ffff88011e200000 s87168 r8192 d31616 u262144
--
[    0.078755] ACPI: bus type PCI registered
[    0.078756] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.078931] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.078933] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820
[    0.079010] PCI: Using configuration type 1 for base access
[    0.079718] ACPI: Added _OSI(Module Device)
[    0.079720] ACPI: Added _OSI(Processor Device)
--
[    0.116705] usbcore: registered new device driver usb
[    0.116763] PCI: Using ACPI for IRQ routing
[    0.118451] PCI: pci_cache_line_size set to 64 bytes
[    0.118883] e820: reserve RAM buffer [mem 0x0009d800-0x0009ffff]
[    0.118884] e820: reserve RAM buffer [mem 0x40004000-0x43ffffff]
[    0.118885] e820: reserve RAM buffer [mem 0x8c0a1000-0x8fffffff]
[    0.118886] e820: reserve RAM buffer [mem 0x11e600000-0x11fffffff]
[    0.118961] NetLabel: Initializing
[    0.118962] NetLabel:  domain hash size = 128
[    0.118963] NetLabel:  protocols = UNLABELED CIPSOv4


$ lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) (prog-if 00 [VGA controller])
    Subsystem: Lenovo Device [17aa:21fa]
    Flags: bus master, fast devsel, latency 0, IRQ 27
    Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
    Memory at e0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 6000 [size=64]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Capabilities: [d0] Power Management version 2
    Capabilities: [a4] PCI Advanced Features
    Kernel driver in use: i915

00:14.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller [8086:1e31] (rev 04) (prog-if 30 [XHCI])

Verificando se free -m não está com bugs:

mount -t tmpfs -o size=80% none /tempRam
dd if=/dev/zero of=/tempRam/testFile bs=1M count=3096

saída:

dd: error writing ‘/tempRam/testFile’: No space left on device
1952+0 records in
1951+0 records out
2046541824 bytes (2.0 GB) copied, 4.74288 s, 431 MB/s

Alguma idéia de por que eu tenho apenas 2.4GB de RAM disponível e como usar todos os 4GB?

    
por user994144 21.07.2016 / 11:57

4 respostas

1

Existem muitas razões possíveis, e é um pouco impossível / inviável investigar o problema daqui sem monitorar completamente o sistema.

Mas aqui vou listar três razões possíveis:

Primeiro

O motivo pode ser diferente devido às tarefas que você tem em seu sistema e às coisas que você está fazendo, pode diferir se você usar qualquer virtualização, se houver processos associados ao fazer snapshots e por meio de alocação de memória COW (Copy-on-right) regras de particionamento que você está executando, E / S de arquivos mapeados na memória, objetos compartilhados que devem ser compartilhados por arquivos executáveis e outros arquivos de objetos compartilhados, links dinâmicos (ligação tardia) e etc.

Além disso, esteja ciente de que nem sempre é possível encontrar sua memória total real adicionando a memória que está sendo usada por todos os processos em execução. Existem muitos aplicativos que parecem estar usando mais memória do que realmente existe na máquina, devido ao objeto compartilhado e outros conceitos relacionados à RAM.

Além disso, a memória livre é toda sobre memória física que não possui dados lógicos mapeados para ela. Sim, devemos estar cientes de que a parte de memória não utilizada tem alguns dados mapeados para ela, mas não no estado ativo e usados por um processo em execução.

BTW, Observe que os sistemas Unix-like querem ter - e mostrar - o mínimo de memória livre possível, nem toda memória livre! Então, pelo que você deve ter adivinhado, eles usam memória que não é ativamente mapeada para processos na máquina em execução para coisas como buffers para várias operações de transferência de E / S e caches.

Segundo

Seu BIOS pode estar com problemas, MAS, como está mostrando a quantidade exata de RAM, podemos dizer que não há nada errado com o BIOS, e o problema é que o kernel não o está usando.

O último

A última coisa que vou listar é, de alguma forma, a primeira coisa que vem à mente de todos, e isso é uma RAM reservada para coisas relacionadas à GPU, especialmente se você tiver uma GPU on-board. Mas como a saída do seu dmesg | grep -C 3 -i e820 não mostra nada errado, então, isso não é problema seu.

É realmente difícil dizer qual é o seu problema, já que não temos um entendimento profundo do seu servidor, mas tudo o que você mencionou na sua pergunta e comentários, e acho que não podemos fazer mais nada aqui.

Eu recomendo que você ⟼ Faça algum teste, por exemplo, faça o download de memtest86+ executando yum install memtest86+ e tente testar sua memória e ver qual é o seu código de saída. E monitore a memória do sistema por um tempo, usando comandos como vmstat -a , vmstat -s , cat /proc/meminfo , top , htop , sar -r etc. e veja se você vê algo estranho.

Se a recomendação acima não ajudou ↴

Duas outras opções finais: Primeiro, reposicione seu RAM, esse suporte da Lenovo pode ajudá-lo nisso. Em segundo lugar, reconstrua e instale um novo kernel.

Espero que isso possa ajudar.

    
por 10.08.2016 / 12:25
0

Você pode encontrar esta página como algo imensamente útil .

TL; DR: A configuração do laptop provavelmente especifica menos do que realmente está disponível. Isso pode ser alterado em /boot/grub/grub.conf .

    
por 10.08.2016 / 06:10
0

Você precisa saber como recompilar um kernel antes de tentar fazer alguma coisa com ele.

  1. vá para o diretório do kernel do linux (geralmente "/ usr / src / linux")
  2. run make menuconfig (ou, faça xconfig, gconfig etc ...)
  3. vá para - > Tipos e recursos do processador
  4. vá para - > Suporte de alta memória
  5. Em seguida, selecione a opção apropriada para a sua máquina (a opção "off" permite que o suporte faça menos de 4 GB)
  6. recompilar o kernel make & & faça módulos & & make modules_install
  7. não se esqueça de reconfigurar o seu gerenciador de inicialização
por 10.08.2016 / 06:49
0

Para o GRUB, modifique o arquivo de configuração do GRUB localizado em /boot/grub/grub.conf (e certifique-se de que a versão do kernel esteja correta)

# NOTICE: You have a /boot partition. This means that 
#  all kernel paths are relative to /boot/ 
default=0 
timeout=30 
splashimage=(hd0,0)/grub/splash.xpm.gz 
title Red Hat Enterprise Linux (2.6.9-5.EL)         
root (hd0,0)         
kernel /vmlinuz-2.6.9-5.EL ro root=/dev/hda3 mem=**128M**

e atualize o grub por

sudo yum update-grub

Como o CentOS 7 usa o GRUB2 gerado automaticamente e o arquivo /etc/default/grub para fazer o grub config usando o comando grub2-mkconfig Use a linha de comandos do grub para especificar a memória instalada,

sudo nano /etc/default/grub 

e adicione essa linha no eof,

GRUB_CMDLINE_LINUX="mem=8192m"  (for 8GB)
sudo grub2-mkconfig

reinicialize o sistema para que as alterações entrem em vigor. use, cat /proc/meminfo para ver o uso completo da memória do sistema.

    
por 18.05.2018 / 01:39

Tags