Linux中linux 交换空间调整和虚拟内存的区别

自己linux环境内存94G,通过top命令看到内存占用了24G,但是进程mysql当当VIRT的虚拟内存就占用了32g,并且没有设置交换空间(swap=0),
那mysql中那么大的虚拟内存是从哪里申请的? 是从物理内存直接分配的吗?
[]# free -m
& && && && & total& && & used& && & free& &&&shared& & buffers& &&&cached
Mem:& && && &96639& && &24291& && &72347& && && & 0& && &&&152& && & 3497
-/+ buffers/cache:& && &20641& && &75997
Swap:& && && && &0& && && & 0& && && & 0
top - 11:57:02 up&&1:15,&&4 users,&&load average: 0.87, 0.92, 1.14
Tasks: 681 total,& &2 running, 679 sleeping,& &0 stopped,& &0 zombie
Cpu(s):&&4.5%us,&&1.6%sy,&&0.0%ni, 92.4%id,&&1.5%wa,&&0.0%hi,&&0.1%si,&&0.0%st
Mem:&&k total, k used, k free,& &156120k buffers
Swap:& && &&&0k total,& && &&&0k used,& && &&&0k free,&&3582552k cached
& &PID USER& && &PR&&NI&&VIRT&&RES&&SHR S %CPU %MEM& & TIME+&&COMMAND
89164 keystone&&20& &0&&227m&&20m 3556 R 46.5&&0.0& &0:00.28 keystone-manage
89148 root& && &20& &0 &&832 R&&8.3&&0.0& &0:00.15 top
22335 qemu& && &20& &0 10.5g 1.6g 5200 S&&5.0&&1.7& &2:14.76 qemu-kvm
&&6060 mysql& &&&20& &0 32.9g 1.7g&&30m S&&3.3&&1.8& &4:18.05 mysqld
那mysql中那么大的虚拟内存是从哪里申请的?
由于没有swap分区,虚拟内存就都 是从物理内存直接分配的吗?
如果大家有推荐的链接也可以发过来看看,谢谢了。
主题帖子积分
高级会员, 积分 2029, 距离下一级还需 2971 积分
高级会员, 积分 2029, 距离下一级还需 2971 积分
看着挺费劲的,楼主是不是看错了。可以标注的更加清晰些
主题帖子积分
注册会员, 积分 176, 距离下一级还需 24 积分
注册会员, 积分 176, 距离下一级还需 24 积分
看着挺费劲的,楼主是不是看错了。可以标注的更加清晰些
Ok,我描述不清晰,我再说下:
& && &1、linux 环境没有设置swap交换分区,则进程的virt虚拟内存大于实际占用的内存,这个时候虚拟内存从哪分配的?
& && &2、从top命令看到环境上mysql进程资源占用情况:
PID USER& && &PR&&NI&&VIRT&&RES&&SHR S %CPU %MEM& & TIME+&&COMMAND
6060 mysql& &&&20& &0 32.9g 1.7g&&30m S&&3.3&&1.8& &4:18.05 mysqld
& && & 3、可以看到mysql的虚拟内存占用32.9g,实际占用物理内存1.7g,网上都说swap = 32.9 - 1.7 = 31.2g。
这个时候,linux环境没有设置交换分区,则 这个31.2g是从哪里分配的? 物理内存 还是硬盘?
Powered by操作系统原理(12)
系统(169)
交换空间和虚拟内存的区别在于使用的系统不一样,产生的技术手段不一样,以下是详解,希望对你有所帮助!
& & Linux 中的交换空间(Swap space)在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入物理内存要慢。
& & 交换空间可以是一个专用的交换分区(推荐的方法),交换文件,或两者的组合。&
交换空间的总大小应该相当于你的计算机内存的两倍和 32 MB这两个值中较大的一个,但是它不能超过 2048 MB(2 GB)。
& & 虚拟内存是文件数据交叉链接的活动文件。是WINDOWS目录下的一个&WIN386.SWP&文件,这个文件会不断地扩大和自动缩小。
& & 就速度方面而言,CPU的L1和L2缓存速度最快,内存次之,硬盘再次之。但是虚拟内存使用的是硬盘的空间,为什么我们要使用速度最慢的硬盘来做为虚拟内存呢?因为电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致我们只有可怜的256M/512M内存消耗殆尽。而硬盘空间动辄几十G上百G,为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2514628次
积分:35688
积分:35688
排名:第105名
原创:399篇
转载:4517篇
评论:601条
(1)(1)(9)(35)(49)(124)(119)(165)(88)(55)(81)(308)(299)(255)(184)(118)(99)(3)(2)(4)(1)(21)(69)(66)(184)(342)(292)(65)(109)(273)(251)(273)(184)(20)(132)(81)(288)(210)(83)linux(15)
 最近看了的一些内存管理知识,发现一些既熟悉又陌生的几个名词,swap、虚拟内存、page分页,都是与内存相关的一些信息,但他们之间有什么区别呢?要明白这个首先要知道什么是保护模式和实模式。
  以前的是实模式,例如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)
  当程序运行需要的内存大于物理内存时,Linux系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程使用。
  大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。
  Linux内存管理:Linux系统通过2种方法进行内存管理,“调页算法”,“交换技术”。
  调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。
  交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。
  当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
  Linux的虚拟内存
  Linux的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存甚至能通过提供缓存功能影响到文件系统的性能,各种风格的Linux的虚存的实现方式区别很大,但都离不开下面的4个概念。
  1:实际内存
  实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。
  2:交换空间
  交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。
  3:页面调度
  页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为Linux内存被平均划分成大小相等的页面;通常页面大小为 4KB和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。
  4:交换
  页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。
  vmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:90223次
积分:1978
积分:1978
排名:第17230名
原创:92篇
转载:26篇
评论:65条
文章:51篇
阅读:47414
(2)(3)(1)(9)(9)(16)(1)(1)(6)(3)(9)(3)(38)(16)(1)12.4. 虚拟内存/交换空间
12.4. 虚拟内存/交换空间虚拟内存是在磁盘上的一块区域,用以扩充主存的容量。虚拟内存里放的数据是内核不常用的信息,内存管理机制会把这些不常用的内存块保存到磁盘上,当要使用时再重新调入主存。虚拟内存的速度比主存慢很多。用作虚拟内存的磁盘空间叫交换空间(swap)。在Linux下,交换空间可以是一个分区,叫交换分区;也可以是一个文件,叫交换文件。交换分区速度快,但一旦设置,不易修改分区大小;交换文件速度较交换分区慢,但它的容量可随意调整。建议使用交换分区的形式。

我要回帖

更多关于 虚拟机内存交换 的文章

 

随机推荐