Linode 768 - Memory Available
I just upgraded my Linode 512 to a Linode 768, but it shows that I only have 676 MB of memory. I am currently running Ubuntu 11.04 64bit with the kernel "Latest 2.6 Paravirt (2.6.39.1-x86_64-linode19)".
free output:
total used free shared buffers cached
Mem: 692644 685016 7628 0 7484 463388
-/+ buffers/cache: 214144 478500
Swap: 524284 0 524284
cat /proc/meminfo:
MemTotal: 692644 kB
MemFree: 7592 kB
Buffers: 7504 kB
Cached: 464592 kB
SwapCached: 0 kB
Active: 162016 kB
Inactive: 462660 kB
Active(anon): 76460 kB
Inactive(anon): 78264 kB
Active(file): 85556 kB
Inactive(file): 384396 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 524284 kB
SwapFree: 524284 kB
Dirty: 3244 kB
Writeback: 0 kB
AnonPages: 152652 kB
Mapped: 23144 kB
Shmem: 2064 kB
Slab: 32056 kB
SReclaimable: 21972 kB
SUnreclaim: 10084 kB
KernelStack: 1040 kB
PageTables: 8352 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 870604 kB
Committed_AS: 603244 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 10168 kB
VmallocChunk: 34359728088 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 794624 kB
DirectMap2M: 0 kB
Is this normal or is there something that I did wrong? Or, could this be because I upgraded at the end of the month? Thanks in advance for your help!
8 Replies
free
hides the memory reserved by the kernel as it will never be freed up for use by any other process.
If for some reason you need the additional memory you could roll back to a kernel that reserves less memory (such as 2.6.35.4-x86_64-linode16 for example). However, I would recommend sticking with the Latest 2.6 paravirt kernel.
-Tim
@theckman:
The 2.6.39 line of kernels appear to be reserving a bit more memory than previous kernels at boot.
free
hides the memory reserved by the kernel as it will never be freed up for use by any other process.
Note that as of 2.6.39.1 this is only true for 64-bit kernels. The 32-bit 2.6.39.1 reserved memory is pretty much right in line with the earlier kernels.
– David
paul@my-linode:~# free -m
total used free shared buffers cached
Mem: 724 682 42 0 75 425
-/+ buffers/cache: 180 543
Swap: 511 10 501
So it seems like it is either used up by the kernel or not properly reserved. Would be interesting to know whether you use 32-bit or 64-bit.
uname -a
or similar displays it.
@paulengstler:
On my 32-bit system with the newest paravirt kernel this shows up:
paul@my-linode:~# free -m total used free shared buffers cached Mem: 724 682 42 0 75 425 -/+ buffers/cache: 180 543 Swap: 511 10 501
So it seems like it is either used up by the kernel or not properly reserved.
I'm not sure I follow the "not properly reserved" part. It's due to the fact that the kernel is reserving the memory that you don't see it as free in user space (e.g., it's why the free total memory is only 724).
You can check the reserved memory by looking through your dmesg output for the Memory: line. While some of reserved memory is fixed overhead, part is variable by available memory (such as for page tables).
In your case, the ~45MB with the 32-bit kernel compares to the ~90MB of the OP with the 64-bit kernel. So beyond other differences in memory usage just by applications running on a 64-bit system, the 64-bit system is starting with that much less memory off the bat.
I have some other kernel numbers in the thread (which also discusses the 2.6.39 series differences) at
Memory: 509012k/532480k available (5701k kernel code, 23020k reserved, 1656k data, 412k init, 0k highmem)
which results in 497M (or 509424k) in "free" output.
– David