Ít RAM hơn so với cài đặt trên Centos 7


7

Tôi dường như không thể hiểu tại sao tôi có ít RAM có thể sử dụng hơn cài đặt. Tôi đang chạy 64 bit Centos 7 với 1 mô-đun RAM 4096 MB trên Lenovo x230. Một số thông tin từ máy trong câu hỏi:

$ 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

BIOS hiển thị 4096 MB RAM sẽ được cài đặt.

$ 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 (builder@kbuilder.dev.centos.org) (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])

Kiểm tra nếu miễn phí -m không có lỗi:

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

đầu ra:

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

Bất cứ ý tưởng tại sao tôi chỉ có sẵn RAM 2.4gb và làm thế nào để có thể sử dụng tất cả 4GB?


3
Vì trang web này dành cho máy chủ và máy tính xách tay không phải (hoặc ít nhất là không nên ) một máy chủ, tôi đang bỏ phiếu để chuyển câu hỏi này sang Unix & Linux . Cuộc bỏ phiếu chặt chẽ mà bạn thấy là một cuộc bỏ phiếu di chuyển.
Jenny D

1
Được rồi, tôi thấy một số phạm vi dành riêng ở đó, nhưng không có gì nổi bật với tôi như nó sẽ chiếm 1,6 GB. Lạ (Và nếu nó là một phòng nhiều bộ nhớ GPU theo đề nghị của Koen van der Rijt, tôi hy vọng nó sẽ hiển thị trong các dữ liệu e820 như đặt phòng.)
một CVN

2
@ user994144 Có thể, nhưng một lần nữa có thể không, nếu nó gây ra bởi một số phần cứng cụ thể. Trong mọi trường hợp, ở đây tại Unix & Linux có rất nhiều người Unix rất am hiểu. Bắt một câu hỏi unix chuyển đến đây không phải là một cách chức; đó là một cách để đưa câu hỏi đến nơi mà bạn có nhiều khả năng tìm thấy sự trợ giúp tốt nhất với câu hỏi cụ thể này.
Jenny D

1
@SHW có, windows 10 cũng hiển thị khoảng 2,6 GB
user994144

1
Nếu nó không liên quan đến GPU và các bộ phận dành riêng, điều duy nhất bạn nghĩ đến là liệu bạn có sử dụng bất kỳ ảo hóa nào hay không. Nó thực sự kỳ quặc. Vậy, máy chủ / hệ thống này để làm gì? Bạn đang làm gì với nó vậy? Bất kỳ ảo hóa ?? Nếu không, vấn đề sẽ liên quan đến BIOS của bạn và trong trường hợp đó, điều đó thực sự khó điều tra vấn đề từ đây.
FarazX

Câu trả lời:


1

Có nhiều lý do có thể, và việc điều tra vấn đề từ đây mà không hoàn toàn giám sát hệ thống là điều không thể / không khả thi.

Nhưng ở đây tôi sẽ liệt kê ba lý do có thể:

Đầu tiên

Lý do có thể khác nhau do các tác vụ bạn có trên hệ thống và những việc bạn đang thực hiện, nó có thể khác nếu bạn sử dụng bất kỳ ảo hóa nào, nếu bất kỳ quy trình nào liên quan đến thực hiện ảnh chụp nhanh và thông qua cấp phát bộ nhớ COW (Sao chép bên phải), phân vùng quy tắc bạn đang chạy, I / O tệp được ánh xạ bộ nhớ, các đối tượng được chia sẻ dự định được chia sẻ bởi các tệp thực thi và các tệp đối tượng được chia sẻ thêm, liên kết động (liên kết muộn), v.v.

Ngoài ra, hãy lưu ý rằng bạn không thể luôn tìm thấy tổng bộ nhớ thực của mình bằng cách thêm bộ nhớ đang được sử dụng bởi tất cả các quy trình đang chạy. Có nhiều ứng dụng dường như đang sử dụng nhiều bộ nhớ hơn thực tế tồn tại trên máy, do đối tượng dùng chung và các khái niệm liên quan đến RAM khác.

Ngoài ra, bộ nhớ trống là tất cả về bộ nhớ vật lý không có dữ liệu logic được ánh xạ tới nó. Có, chúng ta nên lưu ý rằng phần bộ nhớ không sử dụng có một số dữ liệu được ánh xạ tới nó nhưng không ở trạng thái hoạt động và được sử dụng bởi một quy trình đang chạy.

BTW, Lưu ý rằng các hệ thống giống Unix muốn có - và hiển thị - càng ít bộ nhớ trống càng tốt, không phải tất cả bộ nhớ trống! Vì vậy, từ những gì bạn có thể đoán, họ sử dụng bộ nhớ không được ánh xạ tích cực vào các quy trình trong máy đang chạy cho những thứ như bộ đệm cho các hoạt động chuyển giao và bộ đệm IO khác nhau.

Thứ hai

BIOS của bạn có thể có lỗi, NHƯNG vì nó hiển thị chính xác dung lượng RAM, chúng tôi có thể nói rằng không có gì sai với BIOS và điều đó là kernel không sử dụng nó.

Cuối cùng

Điều cuối cùng tôi sẽ liệt kê, bằng cách nào đó, điều đầu tiên xuất hiện trong tâm trí của bất kỳ ai và đó là RAM dành riêng cho những thứ liên quan đến GPU, đặc biệt nếu bạn có GPU tích hợp. Nhưng vì đầu ra của bạndmesg | grep -C 3 -i e820 chương trình không có gì sai, vì vậy, đây không phải là vấn đề của bạn.

Thật khó để nói vấn đề của bạn là gì vì chúng tôi không hiểu sâu về máy chủ của bạn nhưng tất cả những gì bạn đã đề cập trong câu hỏi và nhận xét của bạn và tôi nghĩ chúng tôi không thể làm gì thêm từ đây.

Tôi khuyên bạn nên thực hiện một số thử nghiệm, ví dụ như tải xuống memtest86+bằng cách chạy yum install memtest86+và thử kiểm tra bộ nhớ của bạn và xem mã thoát của bạn là gì. Và giám sát bộ nhớ hệ thống của bạn trong một thời gian, bằng cách sử dụng các lệnh như vậy vmstat -a, vmstat -s, cat /proc/meminfo, top, htop, sar -rvv, và xem nếu bạn thấy bất cứ điều gì lạ.

Nếu đề xuất trên không giúp được

Hai tùy chọn cuối cùng khác: Đầu tiên, hãy đặt lại ram của bạn, bộ phận hỗ trợ này của Lenovo có thể giúp bạn thực hiện điều đó. Thứ hai, xây dựng lại và cài đặt kernel mới.

Tôi hy vọng điều này có thể giúp đỡ.


BTW, tôi đã gửi email cho bộ phận hỗ trợ RedHat để biết thêm thông tin, tôi sẽ cập nhật câu trả lời của mình bất cứ khi nào và nếu họ thêm bất kỳ lý do nào có thể, nhưng cá nhân tôi nghĩ không nên có bất cứ điều gì khác.
FarazX

Đầu tiên: Chúng tôi đang xem xét Tổng bộ nhớ và không chỉ bộ nhớ trống. Tổng dung lượng bộ nhớ mà HĐH yêu cầu ít hơn so với thực tế hiện tại. Thứ hai: BIOS đang hiển thị chính xác dung lượng RAM được đưa vào máy.
dùng994144

@ user994144 về phần hai, xin lỗi, tôi đã xóa phần thứ hai. Về đầu tiên, tôi biết, tôi thấy. Như tôi đã đề cập, bạn không thể có được tổng số của mình bằng cách thêm bộ nhớ đang được sử dụng bởi các quy trình khác.
FarazX

Có nhiều lý do có thể, nó khác nhau từ hệ thống này đến hệ thống khác.
FarazX

1
Có bạn đời, tôi biết nó cho bạn thấy dung lượng RAM chính xác;) Hãy thử làm đầy 90-93% RAM bằng cách thực hiện những điều được giải thích ở đây hoặc bất cứ điều gì khác, và kiểm tra xem điều gì sẽ xảy ra.
FarazX

0

Bạn có thể thấy trang này rất hữu ích.

TL; DR: Cấu hình cho máy tính xách tay có thể chỉ định ít hơn thực tế có sẵn. Điều này có thể được thay đổi trong /boot/grub/grub.conf.


Tôi đã thử những gì được đề xuất trong bài viết nhưng không thành công.
dùng994144

Các tài liệu này quá cũ cho phiên bản hệ điều hành được báo cáo. CentOS 7 sử dụng grub2.
Mike Shultz

0

Bạn cần biết cách biên dịch lại kernel trước để thử làm điều gì đó với nó.

  1. đi tới thư mục kernel linux (thường là "/ usr / src / linux")
  2. chạy make menuconfig (hoặc, tạo xconfig, gconfig, v.v.)
  3. đi đến -> Các loại và tính năng của bộ xử lý
  4. đi đến -> Hỗ trợ bộ nhớ cao
  5. Sau đó chọn tùy chọn thích hợp cho máy của bạn (tùy chọn "tắt" cho phép hỗ trợ chỉ cần thực hiện dưới 4GB)
  6. biên dịch lại kernel make && tạo mô-đun && tạo mô-đun_install
  7. đừng quên cấu hình lại bộ tải khởi động của bạn

1
Tôi không thấy lý do tại sao kernel hiện tại không hiển thị kích thước bộ nhớ chính xác vì tôi đã cài đặt cùng một hệ điều hành trên một máy tính khác sử dụng cùng một phương thức hoạt động như mong đợi.
user994144

0

Đối với GRUB, sửa đổi tệp cấu hình GRUB có tại /boot/grub/grub.conf, (và đảm bảo phiên bản kernel là chính xác)

# 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**

và cập nhật các grub bởi,

sudo yum update-grub

Vì CentOS 7 sử dụng GRUB2 được tạo tự động và /etc/default/grubtệp để tạo cấu hình grub bằng lệnh grub2-mkconfig Sử dụng dòng lệnh grub để chỉ định bộ nhớ đã cài đặt,

sudo nano /etc/default/grub 

và thêm dòng này vào eof,

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

khởi động lại hệ thống để những thay đổi có hiệu lực. sử dụng, cat /proc/meminfo để xem việc sử dụng bộ nhớ hoàn chỉnh của hệ thống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.