Linux储存管理

 ̄綄美尐妖づ 提交于 2019-12-19 00:54:54

物理内存就是系统硬件提供的内存大小,是真正的内存。相对于物理内存,在Linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。

vmstat命令

一个查看虚拟内存(Virtual Memory Statistics)使用状况的工具。使用该命令可以对虚拟内存、进程、CPU活动进行监控。

vmstat
vmstat 3 2   //每3秒采集一次,共两次。

在这里插入图片描述第一个参数是采样的时间间隔数(Interval),单位是秒,第二个参数是采样的次数(Count)。

符号 意义
r 表示运行队列。
b 表示阻塞的进程
swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足。
buff 用来存储要输出的数据大小。
free 空闲的物理内存的大小。
cache 用来存储要读入的数据大小。
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用。
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。
bo 块设备每秒发送的块数量。
in 每秒CPU的中断次数,包括时间中断。
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换。
us 用户CPU时间。
sy 系统CPU时间。
id 空闲CPU时间。
wt 等待IO CPU时间。

free命令

显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

一般来说如果空闲内存/物理内存>70%,内存性能优;如果小于20%,则性能差,需要添加内存。

语法: free [-bkmotV][-s <间隔秒数>]

free -k -s 2   //b、k、m分别表示以Byte、KB、MB为单位显示内存使用情况,s表示间隔秒数。

第一行的输出是从操作系统(OS)来看的。第二行是从一个应用程序的角度看系统内存的使用情况。第三行为交换区的信息,总量(total),使用量(used)和有多少空闲的交换区(free)。
在这里插入图片描述

注:buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。

proc 文件

/proc/meminfo文件

这个文件给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和free命令显示的结果类似。
在这里插入图片描述

内存分配及释放

void *malloc(size_t size)函数

该函数分配了size个字节的存储空间,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。

void free(void *ptr)函数

该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!