redhat 关于内存的一些总结

一、如何查看内存,精确的查看内存

可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
 (1)top
  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
  可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
  $ top -u oracle
内容解释:
  PID:进程的ID
  USER:进程所有者
  PR:进程的优先级别,越小越优先被执行
  NInice:值
  VIRT:进程占用的虚拟内存
  RES:进程占用的物理内存
  SHR:进程使用的共享内存
  S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  %CPU:进程占用CPU的使用率
  %MEM:进程使用的物理内存和总内存的百分比
  TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
  COMMAND:进程启动命令名称
  常用的命令:
  P:按%CPU使用率排行
  T:按MITE+排行
  M:按%MEM排行
(2)pmap
  可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:
  $ pmap -d 14596
 (3)ps
  如下例所示:
  $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存
  $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5
  其中rsz为实际内存,上例实现按内存排序,由大到小

 

用ps -ef 发现该process的PID(假定为1234), 然后去查/proc/1234/status

 

如果要详细了解系统整体内存的情况,需要了解/proc/meminfo

$ cat /proc/meminfo 
MemTotal:       15729052 kB
MemFree:         1828388 kB
MemAvailable:   12821372 kB
Buffers:             712 kB
Cached:         11627816 kB
SwapCached:       118488 kB
Active:          6834364 kB
Inactive:        6244296 kB
Active(anon):    1464156 kB
Inactive(anon):   897084 kB
Active(file):    5370208 kB
Inactive(file):  5347212 kB
Unevictable:       74620 kB
Mlocked:           74620 kB
SwapTotal:       2097148 kB
SwapFree:        1538872 kB
Dirty:              1500 kB
Writeback:             0 kB
AnonPages:       1428456 kB
Mapped:           152644 kB
Shmem:            908940 kB
Slab:             580448 kB
SReclaimable:     528968 kB
SUnreclaim:        51480 kB
KernelStack:       11776 kB
PageTables:        15828 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9961672 kB
Committed_AS:    7472196 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       67692 kB
VmallocChunk:   34359645184 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1095680 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      255996 kB
DirectMap2M:    16513024 kB

详解如下:

MemTotal: 所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)
 
MemFree: LowFree与HighFree的总和,被系统留着未使用的内存
 
Buffers: 用来给文件做缓冲大小
 
Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache ).
 
SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小,已经被交换出来的内存,但仍然被存放在swapfile                    中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。
 
Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用.
 
Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径.
 
HighTotal:
 
HighFree: 该区域不是直接映射到内核空间。内核必须使用不同的手法使用该段内存。
 
LowTotal:
 
LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。Among many
 
     other things, it is where everything from the Slab is allocated. Bad things happen when you’re out      of lowmem.
 
SwapTotal: 交换空间的总大小
 
SwapFree: 未被使用交换空间的大小
 
Dirty: 等待被写回到磁盘的内存大小。
 
Writeback: 正在被写回到磁盘的内存大小。
 
AnonPages:未映射页的内存大小
 
Mapped: 设备和文件等映射的大小。
 
Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。
 
SReclaimable:可收回Slab的大小
 
SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
 
PageTables:管理内存分页页面的索引表的大小。
 
NFS_Unstable:不稳定页表的大小
 
VmallocTotal: 可以vmalloc虚拟内存大小
 
VmallocUsed: 已经被使用的虚拟内存大小。
 
VmallocChunk: largest contigious block of vmalloc area which is free

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-11-05 11:06  augusite  阅读(1556)  评论(0编辑  收藏  举报