接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。如何看额定值:cat
/proc/meminfo
[root@chris]# cat /proc/meminfoMemTotal:
2049144 kB
MemFree: 172592 kB
Buffers: 558304 kB
Cached: 766176 kB
SwapCached: 2072 kB
Active: 486368 kB
Inactive: 915816 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 2049144 kB
LowFree: 172592 kB
SwapTotal: 4192956 kB
SwapFree: 4086276 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 75584 kB
Mapped: 19012 kB
Slab: 446240 kB
PageTables: 5784 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 5217528 kB
Committed_AS: 425348 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 265508 kB
VmallocChunk: 34359472119 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
用free -m查看的结果:
[root@chris]# free -m total used free shared buffers cached
Mem: 2001 1832 168 0 545 748
-/+ buffers/cache: 538 1462
Swap: 4094 104 3990
查看/proc/kcore文件的大小(内存镜像):
[root@chris]# ll -h /proc/kcore-r--------
1 root root 2.0G Mar 9 19:06 /proc/kcore
备注:
用内存的测量测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo 机器的内存使用信息。/proc/pid/maps
pid为进程号,显示当前进程所占用的虚拟地址。/proc/pid/statm
进程所占用的内存。[root@chris]#
cat /proc/self/statm 14728 116 99 5 0 62 0
输出解释CPU
以及CPU0的每行的每个参数意思(以第一行为例)为:
参数 解释Size
(pages) 任务虚拟地址空间的大小 VmSize/4Resident(pages)
应用程序正在使用的物理内存的大小 VmRSS/4Shared(pages)
共享页数 0Trs(pages)
程序所拥有的可执行虚拟内存的大小 VmExe/4Lrs(pages)
被映像到任务的虚拟内存空间的库的大小 VmLib/4Drs(pages)
程序数据段和用户态的栈的大小(VmData+ VmStk)4dt(pages)
04
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。空闲内存=free+buffers+cached=total-used