LInux下的交换分区以及相关查看命令

linux下SWAP为交换分区,也就是虚拟内存;

当linux系统的物理内存不够的时候,就需要将物理内存中的一些东西释放出来,以供当前程序使用;

那些被释放的空间可能来自于一些很长没有什么操作的程序,被释放出来的空间中保存的内容就会被临时放入swap中;

等到那些程序要运行时,再从swap中恢复保存的数据。

具体swap分区的大小设置问题参考Linux交换分区设置多大为好?

如何查看系统的swap分区?

1. 使用free命令;用以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息。

一般比较常用的是free -m, 执行结果如下:

      total   used    free    shared    buff/cache   available
Mem:   7865   3025    203     754        4636        3775
Swap:  17578  60      17518

因为是以MB为单位,可以看到我这里的纵内存是8GB,已经使用的是3GB左右,free表示物理内存中剩余的实际空间,而available则包含了缓存或缓冲区域的内存,大致计算就是free+buff/cache, 因此,available都比free要大很多。shared表示当前已经废弃不用的内存。第二行swap表示交换分区中的内存情况。

这里简单总结一下buffer和cache的区别,想要详细了解的可以参考这篇文章:
buffer和cache怎么让你们解释的那么难理解?简单来讲,buffer一个是缓冲,cache是缓存。因为硬件上的区别,在电脑内部信息交换的时候就存在速度的快慢问题,有的设备快有的设备慢。那么为了提高效率,就需要设置一个专门的区域来对两个快慢不一致的区域进行交流。buffer为当传输速度较快的设备向传输较慢的设备进行数据传输时,可以现将内存放置在buffer中,这样就无需等待慢设备,而慢设备也可以在需要数据时随时从buffer中拿; 同理,当慢设备向快设备进行数据输送时,由于其速度太慢,快设备就需要等,但是如果有cache,就可以在第一次传输时就将数据放在cache中,等到第二次第三次需要同样的内容时就可以更快。

2. top命令也可以实时动态地查看系统的整体运行情况。

使用方法为top (选项), 具体的参考选项如下:

-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。

常见的如: top -d 1 ,即为每1s刷新一下数据,显示内存的实时使用情况。可以用在debug时观察线程的占用内存情况等等。

实例:

top - 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92
Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie
Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4147888k total,  2493092k used,  1654796k free,   158188k buffers
Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached

主要内容解释如下:

Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
Mem: 
4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap:  5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],

更多linux命令解释可以参考linux命令大全

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章