linux中的交换分区(swap)及优化
SWAP(交换内存)
1、什么是交换内存?
在硬盘上创建一块区域,当你的物理内存快要被用光的时候,内核临时的
物理内存上的文件数据交换到硬盘上的这段区域上面,当物理内存有闲置的时候
在把交换内存上的数据调回到物理内存上的。可能在大多数时候,你会发现你的
交换内存没有被用到,为什么我们的系统在安装的时候强制我们要建立交换内存?
牺牲一定的硬盘空间,给操作系统买份保险!
2、创建交换内存:
创建的步骤:
1、 创建新分区,并且更改分区标识符号为82.
或者在本机上使用dd命令创建一个虚拟文件。
2、 使用mkswap对指定设备制作交换内存文件系统。
3、 swapon开启交换内存
(但是非常遗憾,下次启动机器的时候仍然需要手动使用swapon手动开启)建议直接写入到/etc/fstab中
4、 查看free -m ,swapon -s进行查看
分区类型交换内存:速度快、独立分区
1、fdisk /dev/sdb
n t 82
#partprobe /dev/sdb //重新加载分区表
2、制作swap
# mkswap /dev/sdb7 //以sdb7为例
3、写/etc/fstab
/dev/sdb7 swap swap defaults 0 0 //永久挂载格式
UUID=XXXXXX swap swap defaults 0 0 //生产环境blkid查看文件系统UUID
# swapon -a
4、查看:
# free -m
# swapon -s
文件类型的交换内存:相对速度慢、比较灵活
1、创建虚拟文件:
# dd if=/dev/zero of=/tmp/swap-file1 bs=1M count=N //N为正整数
2、制作swap文件系统
# mkswap /tmp/swap-file1
3、挂载使用/etc/fstab
/tmp/swap-file1 swap swap defaults 0 0
# swapon -a
4、查看:
# free -m
# swapon -s
交换内存的优化及人为干预:
交换内存的调优:
可调参数:/proc/sys/vm/swappiness
当系统非常需要使用内存时,内核会把匿名内存(Anonymous memory)和System V的共享内存(shared memory)交换到磁盘上去,而真正的文件不需要交换到交换内存上去,而是直接写会到磁盘文件系统上(清掉page cache)。
调低/proc/sys/vm/swappiness时,核心倾向于不交换,主要用于更快的响应速度。如:apache
调高/proc/sys/vm/swappiness时,核心倾向于使用交换内存,主要用于繁忙的吞吐量。如:文件服务器
内核尝试去检查一个参数swap_tendency:
Swap_tendency < 100,内核会尽量的从page cache中做回收(写回page cache)
Swap_tendency >=100,内核会尽量交换匿名内存和共享内存。
Swap_tendency = mapped_ratio/2 + distress + vm_swappiness(swap_tendency计算公式)
● mapped_ration : 物理内存的使用百分比。
● distress : 内核尝试释放物理内存的难易程度0-100(page cache回收的难易程度)。distress悲痛;危难
● vm_swappiness:是我们可以通过/proc/sys/vm/swappiness内核参数调节的值。
可以看出我们可以人为的干预交换内存的交换,但无法准确控制因为有distress参数
交换内存的优化:
● 使用多个磁盘做raid0
● 使用SSD设备
● 2.6内核开始交换文件和交换分区,速度上区别不太只要文件没有太多碎片。
● 当挂载交换分区或文件时,每新加一个交换设备优先级比前一个要低一些(优先级高的被先用到)。可以使用 pri=values来指定挂载优先级。
如果要使用多个交换分区来轮询(round-robin),那么多个交换分区使用相同的优先级。
交换内存设置为多大?
docs.redhat.com

如何设置优先级:
/dev/sdb7 swap swap defaults,pri=5 0 0
/dev/sdc6 swap swap defaults,pri=5 0 0
linux中的交换分区(swap)及优化的更多相关文章
- linux 交换分区 swap
linux swap分区用来保证内存过载时也可以使用,是在磁盘级别对内存的一次扩展,swap分区必须是一个单独的分区 创建过程: 1.用fdisk 命令新建分区,在创建过程中通过L命令和t命令来调整分 ...
- Linux 交换分区swap
Linux 交换分区swap 一.创建和启用swap交换区 如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存 ...
- Linux之添加交换分区
Linux下的交换分区我们可以随意改变大小,如果说日常生活中分区不够用,今天我们来举个例子如何添加. 1.首先是使用dd命令创建一个空文件,这个空文件的大小就是你要继续添加的swap的大小,比如我这里 ...
- Linux中磁盘mbr分区——实践篇
Linux中磁盘mbr分区——实践篇 fdisk命令 语法 fdisk(选项)(参数) 选项 -b <分区大小> 指定每个分区的大小 -l 列出分区表信息 -v 显示版本信息 参数 设备文 ...
- Linux_交换分区SWAP
一.交换分区SWAP 1️⃣:交换分区SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用. 2️⃣:交换分区一般指定虚拟内存的大小 ...
- Linux设置交换分区swap
参考: http://www.vpser.net/opt/vps-add-swap.html https://www.zntec.cn/archives/vps-swap.html http://yz ...
- Linux交换分区swap
一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被 ...
- Linux - 创建交换分区 swap
购买的 1GB 内存的 Linux 小机器,在编译安装 PHP 的时候内存捉急,只好开启 swap 交换分区来增大内存. [root@VM_139_38_centos php-7.2.12]# cat ...
- linux(centos8): 临时关闭/永久关闭交换分区swap?
一,为什么要关闭swap? 1,swap的用途? swap 分区就是交换分区,(windows平台叫虚拟内存) 在物理内存不够用时, 操作系统会从物理内存中把部分暂时不被使用的数据转移到交换分区, 从 ...
随机推荐
- [TimLinux] selinux sesearch命令详解
1. 描述 sesearch用于搜索SELinux安全策略规则集,命令来自包:yum install setools-console. 2. 命令 命令使用方法: sesearch [OPTIONS] ...
- [TimLinux] MySQL InnoDB的外键约束不支持set default引用选项
1. 外键 MySQL的MyISAM是不支持外键的,InnoDB支持外键,外键是MySQL中的三大约束中的一类:主键约束(PRIMARY KEY),唯一性约束(UNIQUE),外键约束(FOREIGN ...
- CF296C Greg and Array 查分数组
题目链接:http://codeforces.com/problemset/problem/296/C 题意:给你n.m.k,表示n个数a[i],m个对数的操作,k个对操作的操作.m个操作:数a[l] ...
- MySql数据库之子查询和高级应用
MySql数据库中的子查询: 子查询:在一条select查询语句中嵌套另一条select语句,其主要作用是充当查询条件或确定数据源. 代码案例如下: 例1. 查询大于平均年龄的学生: select * ...
- 冒泡排序 C&&C++
冒泡排序(因为过程像冒泡,所以叫做冒泡排序) 流程: (1)对数组中各个数字,一次比较相邻两个 (2)如果前面大于后面,就交换这两个数据 (3)再用同样的方法继续排,直到外层循环排完 或者 (1) ...
- 还不懂MySQL索引?这1次彻底搞懂B+树和B-树
前言 看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引….或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree ...
- 四步实现在一台电脑上使用多个github账号
四步实现在一台电脑上同时使用多个GitHub账号 今天和大家聊一下如何在一台电脑上同时使用多个GitHub账号,通过以下四个步骤就可以实现,其中第二个步骤为了便于叙述分成了几个小步骤. 1. 取消全局 ...
- 基于C#WPF框架——动画
WPF提供了一个更高级的模型,通过该模型可以只关注动画的定义,而不必考虑它们的渲染方式.这个模型基于依赖项属性基础架构.本质上,WPF动画只不过是在一段时间间隔内修染方式.这个模型基于依赖项属性基础架 ...
- 01-EF Core笔记之创建模型
使用EF Core的第一步是创建数据模型,模型建的好,下班走的早.EF Core本身已经设置了一系列约定来帮我们快速的创建模型,例如表名.主键字段等,毕竟约定大于配置嘛.如果你想改变默认值,很简单,E ...
- d3.js 入门指南 - 仪表盘
D3的全称是Data-Driven Documents(数据驱动的文档),是一个用来做数据可视化的JavaScript函数库,而JavaScript文件的后缀通常为.js,所以D3被称为D3.js. ...