linux虚拟内存有什么作用

linux虚拟内存有什么作用,第1张

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下添加交换分区的 *** 作

星期五安装oracle数据库时提示换页空间不足,于是添加换页空间.

1.确定硬盘位置和信息

df -k硬盘在hdc

2.添加swap分区

#fdisk /dev/hdc

n *** 作,添加分区,大小2000M,

t *** 作,改变类型,linux swap :82

w *** 作,写入磁盘分区表.

3.mkswap/dev/hdc4

格式化为swap分区

4.编辑/etc/fstab

对比原来的swap,同样加入一行,把分区改为对应的/dev/hdc4

5.swapon /dev/hdc4 或重启计算机使新交换分区生效

----------------------------------------------

最简单的办法是在windows下用pqmagic更改swp的大小

基本linux命令有哪些呢?1、ls命令就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。常用参数搭配:ls -a 列出目录所有文件,包含以.开始的隐藏文件ls -A 列出除.及..的其它文件ls -r 反序排列ls -t 以文件修改时间排序ls -S 以文件大小排序ls -h 以易读大小显示ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来实例:(1) 按易读方式按时间反序排序,并显示文件详细信息ls -lhrt(2) 按大小反序显示文件详细信息ls -lrS(3)列出当前目录中所有以"t"开头的目录的详细内容ls -l t*(4) 列出文件绝对路径(不包含隐藏文件)ls | sed "s:^:`pwd`/:"(5) 列出文件绝对路径(包含隐藏文件)find $pwd -maxdepth 1 | xargs ls -ld2、cd 命令cd(changeDirectory) 命令语法:cd [目录名]说明:切换当前目录至 dirName。实例:(1)进入要目录cd /(2)进入 "home" 目录cd ~(3)进入上一次工作路径cd -(4)把上个命令的参数作为cd参数使用。cd !$3、pwd 命令pwd 命令用于查看当前工作目录路径。实例:(1)查看当前路径pwd(2)查看软链接的实际路径pwd -P4、mkdir 命令mkdir 命令用于创建文件夹。可用选项:-m: 对新建目录设置存取权限,也可以用 chmod 命令设置-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。实例:(1)当前工作目录下创建名为 t的文件夹mkdir t(2)在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:mkdir -p /tmp/test/t1/t5、rm 命令删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。rm [选项] 文件…实例:(1)删除任何 .log 文件,删除前逐一询问确认:rm -i *.log(2)删除 test 子目录及子目录中所有档案删除,并且不用一一确认:rm -rf test(3)删除以 -f 开头的文件rm -- -f*6、rmdir 命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。注意:不能删除非空目录实例:(1)当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除:rmdir -p parent/child/child117、mv 命令移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。实例:(1)将文件 test.log 重命名为 test1.txtmv test.log test1.txt(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中mv llog1.txt log2.txt log3.txt /test3(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖mv -i log1.txt log2.txt(4)移动当前文件夹下的所有文件到上一级目录mv * ../8、cp 命令将源文件复制至目标文件,或将多个源文件复制至目标目录。注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!-i 提示-r 复制目录及目录内所有项目-a 复制的文件与原文件时间一样实例:(1)复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。cp -ai a.txt test(2)为 a.txt 建议一个链接(快捷方式)cp -s a.txt link_a.txt9、cat 命令cat 主要有三大功能:1.一次显示整个文件:cat filename2.从键盘创建一个文件:cat >filename只能创建新文件,不能编辑已有文件。3.将几个文件合并为一个文件:cat file1 file2 >file-b 对非空输出行号-n 输出所有行号实例:(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里cat -n log2012.log log2013.log(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里cat -b log2012.log log2013.log log.log(3)使用 here doc 生成新文件cat >log.txt <<EOF>Hello>World>PWD=$(pwd)>EOFls -l log.txtcat log.txtHelloWorldPWD=/opt/soft/test(4)反向列示tac log.txtPWD=/opt/soft/testWorldHello10、more 命令功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。命令参数:+n 从笫 n 行开始显示-n 定义屏幕大小为n行+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 -c 从顶部清屏,然后显示-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能-l忽略Ctrl+l(换页)字符-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似-s 把连续的多个空行显示为一行-u 把文件内容中的下画线去掉常用 *** 作命令:Enter向下 n 行,需要定义。默认为 1 行Ctrl+F 向下滚动一屏空格键 向下滚动一屏Ctrl+B 返回上一屏= 输出当前行的行号:f 输出文件名和当前行的行号V 调用vi编辑器!命令 调用Shell,并执行命令q 退出more实例:(1)显示文件中从第3行起的内容more +3 text.txt(2)在所列出文件目录详细信息,借助管道使每次显示 5 行ls -l | more -5按空格显示下 5 行。11、less 命令less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。常用命令参数:-i 忽略搜索时的大小写-N 显示每行的行号-o <文件名>将less 输出的内容在指定文件中保存起来-s 显示连续空行为一行/字符串:向下搜索“字符串”的功能?字符串:向上搜索“字符串”的功能n:重复前一个搜索(与 / 或 ? 有关)N:反向重复前一个搜索(与 / 或 ? 有关)-x <数字>将“tab”键显示为规定的数字空格b 向后翻一页d 向后翻半页h 显示帮助界面Q 退出less 命令u 向前滚动半页y 向前滚动一行空格键 滚动一行回车键 滚动一页[pagedown]: 向下翻动一页[pageup]: 向上翻动一页实例:(1)ps 查看进程信息并通过 less 分页显示ps -aux | less -N(2)查看多个文件less 1.log 2.log可以使用 n 查看下一个,使用 p 查看前一个。12、head 命令head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。常用参数:-n<行数>显示的行数(行数为复数表示从最后向前数)实例:(1)显示 1.log 文件中前 20 行head 1.log -n 20(2)显示 1.log 文件前 20 字节head -c 20 log2014.log(3)显示 t.log最后 10 行head -n -10 t.log13、tail 命令用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。常用参数:-f 循环读取(常用于查看递增的日志文件)-n<行数>显示行数(从后向前)(1)循环读取逐渐增加的文件内容ping 127.0.0.1 >ping.log &后台运行:可使用 jobs -l 查看,也可使用 fg 将其移到前台运行。tail -f ping.log(查看日志)14、which 命令在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:which 查看可执行文件的位置。whereis 查看文件的位置。locate 配合数据库查看文件位置。find实际搜寻硬盘查询文件名称。which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。常用参数:-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。实例:(1)查看 ls 命令是否存在,执行哪个which ls(2)查看 whichwhich which(3)查看 cdwhich cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)查看当前 PATH 配置:echo $PATH或使用 env 查看所有环境变量及对应值15、whereis 命令whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。常用参数:-b 定位可执行文件。-m 定位帮助文件。-s 定位源代码文件。-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。实例:(1)查找 locate 程序相关文件whereis locate(2)查找 locate 的源码文件whereis -s locate(3)查找 lcoate 的帮助文件whereis -m locate


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7336781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存