Linux创建和启用Swap交换区
来源:互联网 发布:java字符串替换失败 编辑:程序博客网 时间:2024/06/05 18:56
Linux创建和启用Swap交换区
最近测试服务器老是出现卡死情况,因为用的阿里云服务器自己还不能重启;每次都需要惊动技术总监来重启服务器,一直觉得是测试服务器内存问题,原来是自己太菜…
查看了下内存使用情况
total used free shared buff/cache availableMem: 991 859 68 0 64 39Swap: 0 0 0
不是很明白Swap是什么意思,百度了一下才知道Swap交换区
概念粘一下
对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇。Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮)。Linux的很多独特的设计,对性能也产生了巨大的提升,也为其他应用软件和系统提供了参考。这篇文章介绍一下Linux中swap与memory。
对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,虽然相对来说价格一直在降低。除此之外,内存的断电丢失数据也是一个原因说不能把所有数据和程序都保存在内存中。既然不能全部使用内存,那数据还有程序肯定不可能一直霸占在内存中。当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去。但是踢到哪里去,这时候swap就出现了。swap全称为swap place,,即交换区,当内存不够的时候,被踢出的进程被暂时存储到交换区。当需要这条被踢出的进程的时候,就从交换区重新加载到内存,否则它不会主动交换到真是内存中。
在详细介绍swap之前,我们需要知道的是计算机对内存分为物理内存与虚拟内存(注意虚拟内存和虚拟地址空间的区别)。物理内存就是计算机的实际内存大小,由RAM芯片组成的。虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由操作系统做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。这里的虚拟内存即所谓的swap。
当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。 内存与swap之间是按照内存页为单位来交换数据的,一般Linux中页的大小设置为4kb。而内存与磁盘则是按照块来交换数据的。
创建和使用Swap
1.创建swap交换区硬盘存储用的空白文件。
dd if=/dev/zero of=/swap bs=1M count=1024
2.使用mkswap格式化文件为swap文件系统
mkswap -f /swap
3.启用刚才创建的Swap文件
swapon /swap
4.设置开机自动启用swap文件交换区,修改/etc/fstab,增加一行代码
/swap swap swap defaults 0 0
这样的话就启动swap了,但是swap的使用内存 一直是0,原来是自己的swappiness设置问题
查看swappiness值
cat /proc/sys/vm/swappiness
发现设置的是0
swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。如果设置成60,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。OK明白了 修改swappiness
临时调整的方法如下,我们调成50:
[root@iZ2zedk6fi761b19pn9qdeZ ~]# sysctl vm.swappiness=50vm.swappiness = 50[root@iZ2zedk6fi761b19pn9qdeZ ~]# cat /proc/sys/vm/swappiness50
这只是临时调整的方法,重启后会回到默认设置的
要想永久调整的话,需要将
需要在/etc/sysctl.conf修改,加上:
vm.swappiness=50
激活设置
[root@timeserver ~]# sysctl -p
设置完毕重启了下tomcat 发现正常运行了
[root@iZ2zedk6fi761b19pn9qdeZ dev]# free -m total used free shared buff/cache availableMem: 991 587 273 0 130 278Swap: 1023 265 758
此博客参考了其他博客,仅做记录用;
学无止境啊,下班~2017年6月7日21:44:13
- [Linux]创建和启用Swap交换区
- Linux创建和启用Swap交换区
- linux 创建swap交换区
- Linux Swap交换区的创建
- linux创建swap交换分区
- redhat Linux 创建交换分区swap
- Linux下创建Swap交换文件
- [转]linux swap交换区(虚拟内存)
- linux 交换分区 swap
- Linux 创建和删除swap file
- linux硬盘格式化和创建swap分区
- Linux-交换空间(swap space)
- Linux Swap交换分区设置
- Linux 交换空间管理(swap)
- linux swap 交换分区设置
- Linux Swap交换分区设置
- Linux Swap交换分区设置
- Linux Swap交换分区设置
- 从博客复制程序到VS里面出现<span style="font-size:24px;"><strong>
- 光流法
- 平方数
- 用代码方式设置引用和删除引用
- 在BIOS里,用U盘进行WIN10系统安装
- Linux创建和启用Swap交换区
- VIM多个文档之间复制粘贴
- 欢迎使用CSDN-markdown编辑器
- 面试过程中遇到问题的总结与分析
- 一个从JSP到Servlet的简单小实例
- Java 习题5 参考答案及解析(1)
- 【异常】阿里云ECS之Centos7下载文件出现”wget: unable to resolve host address”
- forward 和redirect的区别
- Eclipse/Myeclipse中引入.Js文件后出现 missing semicolon错误的解决。