dmesg「Memory Akb / Bkb available」の値を次のように読み取る必要があります。
  現在使用可能なAがあり、システムの最大ページフレーム数にページサイズを掛けたものがBです。
これはからarch/x86/mm/init_64.cです:
printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
                 "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n",
                 nr_free_pages() << (PAGE_SHIFT-10),
                 max_pfn << (PAGE_SHIFT-10),
                 codesize >> 10,
                 absent_pages << (PAGE_SHIFT-10),
                 reservedpages << (PAGE_SHIFT-10),
                 datasize >> 10,
                 initsize >> 10);
nr_free_pages()現在使用されていない、カーネルによって管理されている物理メモリの量を返します。max_pfn最高のページフレーム番号です(PAGE_SHIFTシフトはそれをkbに変換します)。最高のページフレーム番号は、予想よりも(はるかに)大きくなる可能性があります。BIOSによって実行されるメモリマッピングには、ホールが含まれる可能性があります。
これらの穴が占める量は、absent_pages変数として追跡され、として表示されkB absentます。これにより、「利用可能な」出力の2番目の数値と実際にインストールされているRAMの違いのほとんどが説明されます。  
これらの穴を「見る」ためBIOS-e820にgrepすることができdmesgます。そこにメモリマップが表示されます(dmesg起動後の出力の上部)。実際の使用可能なRAMがどの物理アドレスにあるかを確認できるはずです。
(他のx86の癖と予約済みメモリ領域がおそらく残りを占めています-詳細はわかりません。)
MemTotalin /proc/meminfoは、使用可能なRAM を示します。ブートシーケンスの最後に、カーネルはinit不要になったデータを解放するため、報告される値/proc/meminfoは、ブートシーケンスの最初の部分でカーネルが出力する値よりも少し高くなる可能性があります。
(meminfo間接的な使用totalram_pages、その表示のためには。x86_64の場合、これは算出されるarch/x86/mm/init_64.c介しすぎるfree_all_bootmem()自身がであるmm/bootmem.c非NUMAカーネルのため。)