Linux内存Mem和Swap那点事

今天被叫着看一个性能问题,发现了一个很有意思的事情,当Linux的物理内存快被耗尽时,系统会把一些进程占用的内存转移swap区,当物理内存被释放一部分时,swap区的一些内存占用又慢慢回到mem区,但是mem区却不再是之前的满负荷状态,而是有一部分free的内存!

【17G大小进程压力测试结果】

  总资源消耗 内存类型 Used(G) Free(G) Total(G)
压力测试前 35.86 Mem 30.14 1.08 64
Swap 5.72 25.57
压力测试结束前期 34.78 Mem 12.78 18.45 64
Swap 22.00 9.30
压力测试结束后期 37.04 Mem 21.99 9.24 64
Swap 15.04 16.26

 

【总结】

  1. 当物理内存快被耗尽时,系统并没有崩溃,而是拿swap做临时内存,当两者都耗尽,系统OutofMemory
  2. 物理内存到达峰值,系统中可能一些不常用的进程内存占用被踢到swap区
  3. 当Mem区的资源进行释放时,被挪到swap的内存并不会全部回来的,随着系统或者程序的唤醒才会慢慢回到mem区
  4. Swap是内存不够时磁盘虚拟出来的内存,磁盘主要是I/O级别的操作并不是系统内核级别的操作,处理速度跟Mem区不是一个等级

 

 

你可能感兴趣的:(Linux)