インストールされているよりも利用可能なメモリが少ない理由を理解できないようです。私は1x 4096MB RAMモジュールを搭載したLenovo x230で64ビットCentos 7を実行しています。機械に関するいくつかの情報:
$ 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 には、インストールする RAM が 4096MB と表示されます。
$ 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])
エラーがないか free -m を確認してください。
mount -t tmpfs -o size=80% none /tempRam
dd if=/dev/zero of=/tempRam/testFile bs=1M count=3096
出力:
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
なぜ2.4 GBのRAMしか利用できず、4 GBをすべて利用できるのか知っていますか?
答え1
考えられる原因はさまざまであり、システムを完全に監視せずにここで問題を調査することはやや不可能/実行不可能です。
しかし、ここでは3つの考えられる理由をリストします。
最初
原因は、システムで実行される操作と操作によって異なります。これは、仮想化、スナップショットの実行に関するプロセス、COW(右側のコピー)によるメモリ割り当て、パーティション化規則が異なる場合に当てはまります。実行、メモリマップされたファイルI / O、実行可能ファイル、および追加の共有オブジェクトファイルで共有する共有オブジェクト、動的接続(後期バインディング)など
また、実行中のすべてのプロセスで使用中のメモリを合計して実際の合計メモリを常に見つけることはできないことに注意してください。共有オブジェクトやその他のRAM関連の概念により、多くのアプリケーションが実際にシステムに存在するよりも多くのメモリを使用しているように見えます。
さらに、空きメモリは、論理データがマッピングされていない物理メモリに関する。はい、メモリの未使用部分には一部のデータがマッピングされていますが、アクティブではなく実行中のプロセスで使用されることに注意してください。
ちなみに、Unixファミリーシステムは、利用可能なすべてのメモリではなく、できるだけ少ないメモリを持って表示したいことに注意してください。推測されましたが、彼らが使うメモリは積極的に実行中のマシンのプロセスにマップされたさまざまなIO転送ジョブに使用されるバッファとキャッシュ。
第二
BIOSに問題がある可能性がありますが、正しいRAM容量が表示されるため、BIOSには問題がないと言うことができ、問題はカーネルがそれを使用しないことです。
ついに
最後にリストしたいのは、誰もが最初に思い出すことです。ただし、出力にdmesg | grep -C 3 -i e820
エラーが表示されないため、これは問題ではありません。
私たちはあなたのサーバーについての深い知識がないので、あなたの問題が何であるかを言うのは難しいですが、あなたの質問と意見で言及したすべてのものを見ると、ここで私たちができることは何もないと思います。
お勧めします⟼たとえば、memtest86+
ダウンロードを実行していくつかのテストを実行し、yum install memtest86+
メモリをテストし、終了コードが何であるかを確認します。そしてvmstat -a
、、、、などのコマンドを使用してシステムメモリを一定時間監視し、奇妙な点を見つけたことvmstat -s
を確認してください。cat /proc/meminfo
top
htop
sar -r
上記の提案が役に立たない場合↴
他の2つの最終オプション:まず、RAMを再インストールしてください。Lenovoサポート役に立つかもしれません。次に、新しいカーネルを再構築してインストールします。
これが役に立つことを願っています。
答え2
あなたは見つけることができますこれこのページは非常に便利です。
重要な要約:ノートブックの構成は、実際に利用可能なものより少なく指定できます。これはで変更できます/boot/grub/grub.conf
。
答え3
カーネルで何かを試す前に、カーネルを再コンパイルする方法を知っておく必要があります。
- Linuxカーネルディレクトリ(通常は「/usr/src/linux」)を入力します。
- make menuconfigを実行します(またはmake xconfig、gconfigなど...)。
- ->プロセッサの種類と機能に移動します。
- - >大容量メモリのサポートに移動します。
- 次に、コンピュータに適したオプションを選択します(「オフ」オプションを使用すると、4 GB未満しかサポートできません)。
- カーネル make && makemodules && makemodules_install を再コンパイルします。
- ブートローダを再構成することを忘れないでください
答え4
GRUBの場合は、/boot/grub/grub.confにあるGRUB構成ファイルを変更し、カーネルのバージョンが正しいことを確認してください。
# 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**
グラップを更新し、
sudo yum update-grub
CentOS 7は、自動的に作成されたGRUB2と/etc/default/grub
ファイルを使用して、grubコマンドラインを使用してgrub2-mkconfig
grub構成用にインストールされたメモリを指定するため、
sudo nano /etc/default/grub
eofに次の行を追加します。
GRUB_CMDLINE_LINUX="mem=8192m" (for 8GB)
sudo grub2-mkconfig
変更を適用するには、システムを再起動します。cat /proc/meminfo
システムの全体的なメモリ使用量を表示するために使用します。