linux虚拟存储器
㈠ linux里查看虚拟内存的命令是什么
free -m最后一排的swap就是虚拟内存
㈡ linux 虚拟内存 是什么
和windows下的虚拟内存是一个概念啊,是内存不够用时,把硬盘的空间拿来当内存用喽,用以提高计算机的性能。
㈢ 什么是虚拟存储器
虚拟存储器是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
㈣ linux虚拟内存有什么作用
linux下的vm(虚拟内存)和windows下的作用是一样的,均是防止真实内存资源不足准备的.
linux的vm相关参数介绍
1. 保证linux有足够的物理内存,可以调整vm的如下参数
vm.min_free_kbytes=409600;//默认值是3797,保证物理内存有足够空闲空间,防止突发性换页
vm.vfs_cache_pressure=200;//默认是100,增大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大。越易回收
vm.swappiness=40 //缺省60,减少这个参数会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存
一般在rac的配置环境中配置这三个参数,可以防止换页引起节点短暂无响应,导致节点重启
2. 改善io系统的性能
overcommit_memory = 0
vm.overcommit_ratio = 10 //默认值是50,用于虚拟内存的物理内存的百分比
vm.dirty_ratio = 20 //默认值是40,为了保持稳定,持续的写入,把这个值调整的小一些,经验值是20
vm.dirty_background_ratio //缺省数值是500,也就是5秒,如果系统要求稳定持续的写,可以适当降低该值,把峰值的写操作平均多次,也避免宕机丢失更多的数据
vm.dirty_expire_centisecs //缺省是3000,也就是30秒,如果系统写操作压力很大,可以适当减小该值,但也不要太小;建议设置为 1500
vm的相关参数在/proc/sys目录下
相关命令
sysctl -p //修改vm参数后,运行这个命令可以立即生效
sysctl -a //查看所有的vm参数
与磁盘IO子系统有关的
/proc/sys/vm/dirty_ratio
这个参数控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,
表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内
存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合
时,应该降低其数值,一般启动上缺省是 10。下面是增大的方法:
echo '40' > /proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_background_ratio
这个参数控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百
分比,意思是当写缓冲使用到系统内存多少的时候,pdflush开始向磁盘写出数据。增大之会
使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒
定的写入场合时,应该降低其数值,一般启动上缺省是 5。下面是增大的方法:
echo '20' > /proc/sys/vm/dirty_background_ratio
/proc/sys/vm/dirty_writeback_centisecs
这个参数控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,
也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可
以把尖峰的写操作削平成多次写操作。设置方法如下:
echo "200" > /proc/sys/vm/dirty_writeback_centisecs
如果你的系统是短期地尖峰式的写操作,并且写入数据不大(几十M/次)且内存有比较多富裕,那么应该增大此数值:
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs
/proc/sys/vm/dirty_expire_centisecs
这个参数声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。
单位是 1/100秒。缺省是 3000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写
操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快。建
议设置为 1500,也就是15秒算旧。
echo "1500" > /proc/sys/vm/dirty_expire_centisecs
当然,如果你的系统内存比较大,并且写入模式是间歇式的,并且每次写入的数据不大(比如几十M),
那么这个值还是大些的好。
与网络IO子系统有关的
/proc/sys/net/ipv4/tcp_retrans_collapse
这个参数控制TCP双方Window协商出现错误的时候的一些重传的行为。但是在老的2.6的核
(<2.6.18)里头,这个重传会导致kernel oops,kernel panic,所以,如果出现有
tcp_retrans_*样子的kernel panic,可以把这个参数给设置成0:
echo '0' > /proc/sys/net/ipv4/tcp_retrans_collapse
提高Linux应对短连接的负载能力
在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT 状态的socket。
你可以用下面的命令看到:
netstat -ant| grep -i time_wait
有时候,这个数目是惊人的:
netstat -ant|grep -i time_wait |wc -l
可能会超过三四万。这个时候,我们需要修改 linux kernel 的 tcp time wait的时间,缩短之,
有个 sysctl 参数貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,缺省值是 60,
也就是60秒,很多网上的资料都说将这个数值设置低一些就可以减少netstat 里面的TIME_WAIT状态,
但是这个说法是错误的。经过认真阅读Linux的内核源代码,我们发现这个数值其实是输出用的,
修改之后并没有真正的读回内核中进行使用,而内核中真正管用的是一个宏定义,在
$KERNEL/include/net/tcp.h里面,有下面的行:
#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
而这个宏是真正控制 TCP TIME_WAIT 状态的超时时间的。如果我们希望减少 TIME_WAIT 状态的数目
(从而节省一点点内核操作时间),那么可以把这个数值设置低一些,根据我们的测试,设置为 10
秒比较合适,也就是把上面的修改为:
#define TCP_TIMEWAIT_LEN (10*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
然后重新编译内核,重启系统即可发现短连接造成的TIME_WAIT状态大大减少:
netstat -ant | grep -i time_wait |wc -l
一般情况都可以至少减少2/3。也能相应提高系统应对短连接的速度。
/proc/irq/{number}/smp_affinity
在多 CPU 的环境中,还有一个中断平衡的问题,比如,网卡中断会教给哪个 CPU 处理,
这个参数控制哪些 CPU 可以绑定 IRQ 中断。其中的 {number} 是对应设备的中断编号,
可以用下面的命令找出:
cat /proc/interrupt
比如,一般 eth0 的 IRQ 编号是 16,所以控制 eth0 中断绑定的 /proc 文件名是
/proc/irq/16/smp_affinity。上面这个命令还可以看到某些中断对应的CPU处理的次数,
缺省的时候肯定是不平衡的。
设置其值的方法很简单,smp_affinity 自身是一个位掩码(bitmask),特定的位对应特
定的 CPU,这样,01 就意味着只有第一个 CPU 可以处理对应的中断,而 0f(0x1111)
意味着四个 CPU 都会参与中断处理。
几乎所有外设都有这个参数设置,可以关注一下。
这个数值的推荐设置,其实在很大程度上,让专门的CPU处理专门的中断是效率最高的,比如,
给磁盘IO一个CPU,给网卡一个CPU,这样是比较合理的。
㈤ linux操作系统虚拟存储器概述的一道题!解答 谢谢!
写程序太麻烦了!大概讲讲吧,你再看看书。
FIFO:
依次调入1234,占用全部内存,再调入21时不出现缺页(内存映象为:1234)
调入5时产生缺页,因为1最先被调入,因此1被释放同时把5调入(内存映象:5234);同理,调入第6页也是如此(内存映象:5634)
再调21时,34被释放,内在映象5621,依此类推即可。
LRU:
依次调入1234,占用全部内存,再调入21时不出现缺页(内存映象为:1234)
调入5时产生缺页,因为3和4最近最少使用,因此3或4都有可能被释放(和程序设计有关),但只有一个被释放,这里假定3被释放,5被调入(内存映象:1254)
调入6时产生缺页,因为4最近最少使用,因此4被释放,6被调入(内存映象:1256)
这里调入212不会出现缺页,再调入3时,其情形同前调入5时的情况一样。
可以看到:FIFO出现缺页的次数比LRU多得多,但FIFO实现很简单并且占用资源少,各有特色,不能一概而论。
㈥ linux 如何释放虚拟内存
swap释放:
用swapoff -a 关闭虚拟内存(释放)
再用swapon -a 打开虚拟内存
注:swapon / swapoff 必须要root权限才能使用
㈦ linux中查看虚拟内存和cpu占用率的命令是什么
top,free,cat/proc/meminfo,cat/proc/cpuinfo。
[root@centerlisdbproc]#dmidecode|grep-A16"MemoryDevice"|more[objectObject]。
查看内存使用情况:cat/proc/meminfo,查看CPU使用情况:cat /proc/cpuinfo。
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。
运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:$ top -u oracle。
(7)linux虚拟存储器扩展阅读:
一、查看内存占用:
1、free
# free -m。
以MB为单位显示内存使用情况。
# free -h。
以GB为单位显示内存使用情况。
# free -t。
以总和的形式查询内存的使用信息。
# free -s 5。
周期性的查询内存使用信息。
每5秒执行一次命令。
二、查看CPU使用情况:
1、top。
top后键入P看一下谁占用最大。
# top -d 5。
周期性的查询CPU使用信息。
每5秒刷新一次。
2、ps auxw(查看本机的进程所占cpu和mem的百分比情况)。
使用"ps auxw" 可以查看到本机的进程所占cpu和mem的百分比情况。
# ps auxw | head -1
%CPU 进程的cpu占用率。
%MEM 进程的内存占用率。
3、查看本机所有进程的CPU占比之和。
# cat cpu_per.sh
三、查看cpu信息(信息记录在/proc/cpuinfo中)
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数。
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数。
㈧ linux 的虚拟内存是什么怎么用我可以把虚拟内存当内存用吗
通俗的说就是你内存条容量不够用了,系统就划出硬盘的一部分空间当做虚拟运存!但是运行速度慢!
手动设置虚拟内存大小:
①用右键点击桌面上的“我的电脑”图标,在出现的右键菜单中选“属性”选项打开“系统属性”窗口。在窗口中点击“高级”选项卡,出现高级设置的对话框
②点击“性能”区域的“设置”按钮,在出现的“性能选项”窗口中选择“高级”选项卡,打开其对话框。
③在该对话框中可看到关于虚拟内存的区域,点击“更改”按钮进入“虚拟内存”的设置窗口。选择一个有较大空闲容量的分区,勾选“自定义大小”前的复选框,将具体数值填入“初始大小”、“最大值”栏中,而后依次点击“设置→确定”按钮即可,最后重新启动计算机使虚拟内存设置生效
㈨ linux 什么时候用的虚拟内存
一般Linux系统的SWAP虚拟内存只有当物理内存长时间占满的时候才会使用,一般设置成物理内存的1-2倍就可以,实际上来讲如果服务器的IO操作不频繁的话很少会用到虚拟内存哦,如果您是CENTOS7或者RHEL7的系统,创建方法推荐看下《Linux就该这么学》的第一章与第四章,有时间看看吧~有详细的讲到哦~
㈩ linux里面虚拟内存和swap有什么区别
为了提高磁盘存取效率, 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系统采用了调页机制,即系统一些内存中的页面到磁盘上,腾出来空间供进程使用。
大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。
Linux内存管理:Linux系统通过2种方法进行内存管理,“调页算法”,“交换技术”。
调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。
交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。
当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
Linux的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存甚至能通过提供缓存功能影响到文件系统的性能,各种风格的Linux的虚存的实现方式区别很大,但都离不开下面的4个概念。
1:实际内存
实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。
2:交换空间
交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。
3:页面调度
页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为Linux内存被平均划分成大小相等的页面;通常页面大小为 4KB和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。
4:交换
页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。
vmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。