Swap是个什么东东?

2024-01-31 14:08
文章标签 swap 东东

本文主要是介绍Swap是个什么东东?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要明白这个首先要知道什么是保护模式和实模式。
以前的操作系统是实模式,例如dos。每个时候只有一个进程在跑,这个进程使用全部的物理内存。
后来发展到保护模式,分时多进程。一个CPU上跑多个进程, 但进程不知道到底有多少内存可以用,它能访问内存最大地址。例如16位系统就能访问2^16byte,32位就是2^32位。但是实际上没有那么多内存阿?怎么办?保护模式就应运而生了。
假设进程是一个刘祥,裁判(系统)一发令他就开始跑步。但是裁判说给你1秒,可以跑100米。于是刘祥开始跑步(内存地址),一秒后刘祥只跑了10米,裁 判吹哨说:刘祥你先歇会,我要去给王军霞吹哨呢,现记住你跑到哪里了(保护),等会从这里开始。裁判给王军霞吹哨,一只跑一秒,回来再给刘祥吹哨再跑1 秒,如此往复。开始跑步的人少,刘祥还可以站在跑道上休息。后来跑步的人越来越多,跑道都挤满了人,那么只能把一些人移动到跑道旁的草地上休息(交换)。 后来发现有些人横七竖八的躺着,占了不少空间,于是规定每个人只能站着(page),这样可以容纳很多的人。
swap -- 草地,就是存放page的硬盘空间。
virtual memory -- 假设刘祥跑n圈就已经是到北京的距离了,可是他们还在原地。虚拟就是不存在的。
page -- 草地上的格,每次只容纳一个人。
为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache.前者针对磁盘块的读写,后者针对文件inode的读写.这些Cache有效缩短了I/O系统调用(比如 read,write,getdents)的时间.
内存活动基本上可以用3个数字来量化:活动虚拟内存总量,交换(swapping)率和调页(paging)率.其中第一个数字表明内存的总需求量,后两 个数字表示那些内存中有多少比例正处在使用之中.目标是减少内存活动或增加内存量,直到调页率保持在一个可以接受的水平上为止.
活动虚拟内存的总量(VM)=实际内存大小(size of real memory)(物理内存)+使用的交换空间大小(amount of swap space used)
当程序运行需要的内存大于物理内存时,UNIX系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程使用。
大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。
UNIX内存管理:UNIX系统通过2种方法进行内存管理,“调页算法”,“交换技术”。
调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。
交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。
当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
Unix的虚拟内存
Unix的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存甚至能通过提供缓存功能影响到文件系统的性能,各种风格的UNIX的虚存的实现方式区别很大,但都离不开下面的4个概念。
1:实际内存
实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。
2:交换空间
交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。
3:页面调度
页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为Unix内存被平均划分成大小相等的页面;通常页面大小为 4KB和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内 存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。
4:交换
页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。
vmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。
Procs
r: The number of processes waiting for run time.
运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
b: The number of processes in uninterruptable sleep.
处于不可中断状态的进程数,常见的情况是由IO引起的
w: The number of processes swapped out but otherwise runnable.
Memory
swpd: the amount of virtual memory used (kB).
free: the amount of idle memory (kB).
空闲的物理内存
buff: the amount of memory used as buffers (kB).
作为buffer cache的内存,对块设备的读写进行缓冲
cache: the amount of memory used as cache.
Swap
si: Amount of memory swapped in from disk (kB/s). 虚拟内存的页导入(从SWAP DISK导入RAM)
so: Amount of memory swapped to disk (kB/s). 虚拟内存的页导出.
(从RAM到SWAP DISK)


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/55764/showart_1667991.html

这篇关于Swap是个什么东东?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/664030

相关文章

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

linux定时监听ssh服务是否启动-------麒麟操作系统永久关闭swap

linux监听ssh服务是否启动 1、监听脚本2、定时任务3、麒麟操作系统,永久关闭swap 1、监听脚本 #在/usr/local/bin目录下新建脚本文件 cd /usr/local/bintouch check_sshd.sh#给可执行权限chmod +x /usr/local/bin/check_sshd.sh 脚本内容如下: #!/bin/bashs

某东东的jdgs算法分析--适合进阶学习

某东东的jdgs算法分析   这个贴主要还是对算法本身结构部分描述会多点,憋问,问就是过去太久了,很多逆向过程不一定能还原(主要是懒,不想原路再走一遍),所以可能有部分跳跃的内容,会给具体代码,但对应的偏移地址和具体信息没有,给大家一个锻炼自己的机会 ( •_•)   继续观看前申明:本文涉及的内容是为给大家提供适合大家巩固基础及进阶更高的技术,别做不好的事情哦。 算法分析结构划分

日常避坑指南:如何合理利用Swap优化MongoDB内存管理

MongoDB作为一款高性能的NoSQL数据库,广泛应用于大数据处理和实时应用中。然而,面对批量数据写入时,MongoDB对内存的需求极为苛刻,尤其是在测试服务器或资源受限的环境下,容易引发系统性能问题。本文将探讨如何通过合理利用Swap来优化MongoDB的内存管理,确保系统的稳定运行。 问题背景:内存不足与系统卡死 在测试环境中,当MongoDB执行大规模数据读写操作时,服务器负载常常

Linux内存、Swap、Cache、Buffer详细解析

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取 后台回复“k8s”,可领取k8s资料 来源:r6d.cn/abK6G 1. 通过free命令看Linux内存 total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 shared:进程间共享内存(一般不会用,可以忽略)。 buffers:

HDU 2819 Swap (行列匹配+输出解)

题意:能否使对角线上全是1 ,这个简单直接按行列匹配,难在路径的输出,我们知道X,Y左右匹配完了之后,不一定是1–1,2–2,3–3……这样的匹配。可能是1–3,2–1,3–2,我们要把他们交换成前一种的匹配形式,也就是路径的答案,再有矩阵的一些关于秩的性质,行变换和列变换是等价的。 #include<cstdio>#include<iostream>#include<algorithm>

条款25 考虑写出一个不抛异常的swap函数

总结:      如果 std::swap 对于你的类型来说是低效的,请提供一个 swap 成员函数,并确保你的 swap 不会抛出异常。      如果你提供一个成员 swap,请同时提供一个调用成员swap的非成员swap。对于类(非模板),还要特化 std::swap。      调用swap时,请为std::swap使用一个using声明式,然后在调用 swap时不使用任何names

linux swap slot机制

将anonymous页面swap out的时候,需要从磁盘上分配空闲的swap slot。内存page的申请可以依靠slab cache来加快分配速度,那swap slot的分配呢?Intel的工程师Tim Chen于2016年提交了一个patch,实现了为加快swap slot分配速度的swap slot cache机制(注意需要区别于swap cache)。 其基本的思想是:swap slo

Linux性能调优指南(2):内存与Swap分区调优

文章目录 二, 内存性能调优1,增加内存容量:基本流程与考虑因素大概的流程吧 2,内存压缩技术:在Linux上启用与配置zRAM如何在Linux系统上启用和配置zRAM的步骤: 3,内存清理工具:编写脚本或安装与使用BleachBi安装 BleachBit 的步骤: 4,Swap分区调优:前提条件、详细步骤与GParted安装4.1 前提条件与注意事项4.2 调整Swap分区的详细步骤4.