简单地说,虚拟内存就是硬盘中的一块区域,它用来存放内存里使用频率不高的页面文件。好处是为了提高内存的利用率 - 让使用频率高的页面文件活动在内存区域中,提高CPU对数据操作的速度。在Linux中,这个区域叫做swap,一般大小应设置为物理内存的2倍。

   vm.swappiness是Linux内核的一个参数,范围是0~100。它表示实际内存和虚拟内存区域进行数据交换的倾向性大小,数值越大表示倾向性越大,即交换的页面文件越多,反之亦然。一般默认值为60。可用'cat /proc/sys/vm/swappiness’查看。

   这个值应该设置成多大才能提高Linux的性能呢?这个当然要由具体的环境来定了。我在一台CentOS机器上,分别把值设为0,60,100,下面是运行'vmstat -S M 5’的三次数据报告。(vmstat命令是用来查看虚拟内存状况的,参数-S M表示以M为单位,5表示每5秒钟产生一次报告。)这里主要关注bi,bo和wa这三个值,bi代表每秒钟从硬盘读入数据的块数(因为硬盘是块设备),bo表示每秒钟写入硬盘数据的块数,wa表示CPU等待IO设备就绪的时间。
  
当值为0时:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
0  2      0   1277     16   6340    0    0     7     3    1    1  0  2 91  6  0 
2  0      0   1277     16   6340    0    0     9   778 1203 3901  0  5 78 17  0 
0  1      0   1276     16   6340    0    0     4   510 1094 3855  0  1 96  2  0 
0  0      0   1276     16   6340    0    0    13   294 1113 3896  0  3 89  7  0 
2  0      0   1276     16   6340    0    0    12   462 1122 3954  0  2 96  2  0 
0  0      0   1276     16   6340    0    0     8     6 1027 3915  0  1 98  0  0 
0  2      0   1276     16   6340    0    0    19   982 1178 3894  0  2 79 19  0 
0  0      0   1276     16   6340    0    0    10   666 1195 3904  0  3 70 27  0 
0  0      0   1276     16   6340    0    0     7    10 1031 3955  0  2 98  0  0 
0  0      0   1276     16   6340    0    0    15     9 1031 3902  0  5 95  0  0 
2  2      0   1275     16   6341    0    0     7  1420 1275 3930  0  2 67 32  0 
0  0      0   1275     16   6341    0    0     6   290 1125 3939  0  1 89 10  0 
0  0      0   1275     16   6341    0    0    11    18 1029 3975  0  2 98  0  0 
0  0      0   1275     16   6341    0    0    26    22 1037 3984  0  1 98  1  0 
0  0      0   1275     16   6341    0    0     5    18 1027 3892  0  2 97  0  0 
0  0      0   1275     16   6341    0    0     6    10 1029 3878  0  1 98  0  0 
0  2      0   1275     16   6341    0    0     6  1106 1191 3935  0  1 81 18  0 
1  2      0   1275     16   6341    0    0    18  1121 1245 3870  0  1 61 38  0 
0  0      0   1275     16   6341    0    0    14   121 1086 3924  0  2 94  4  0 
0  2      0   1274     16   6341    0    0    12  1264 1245 3925  0  1 73 25  0 
1  0      0   1274     16   6342    0    0     8   777 1208 3897  0  4 74 22  0 
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
0  0      0   1274     16   6342    0    0     8   267 1076 3870  0  5 95  0  0 
0  0      0   1274     16   6342    0    0     6   391 1089 3856  0  2 98  0  0 
0  0      0   1274     16   6342    0    0    10     0 1033 3893  0  1 98  0  0 
2  0      0   1274     16   6342    0    0     5     0 1026 3904  0  2 98  0  0 
0  2      0   1274     16   6342    0    0     5  1016 1193 3907  0  2 82 16  0 
0  0      0   1274     16   6342    0    0     4   203 1092 3895  0  3 90  7  0 
1  3      0   1274     16   6342    0    0     6  1198 1243 3910  0  2 75 23  0 
2  0      0   1274     16   6342    0    0     4    81 1062 3974  0  1 95  3  0 
1  0      0   1274     16   6342    0    0    14    13 1029 3907  0  1 98  0  0 
0  2      0   1274     16   6342    0    0    11  1231 1228 3960  0  4 71 24  0 
0  0      0   1274     16   6342    0    0    10   222 1102 3971  0  2 84 13  0 
0  0      0   1273     16   6343    0    0     6     0 1032 3954  0  2 98  0  0 
0  3      0   1273     16   6343    0    0     6  1411 1314 4007  0  3 69 28  0 
0  0      0   1272     16   6343    0    0    14   386 1157 4162  0  2 91  7  0 
1  0      0   1272     16   6343    0    0    14   810 1170 3921  0  1 89 10  0 
2  0      0   1272     16   6343    0    0     5   566 1137 3884  0  1 92  6  0 
0  0      0   1272     16   6343    0    0    10   265 1073 3938  0  2 98  0  0 
0  0      0   1272     16   6343    0    0    54   802 1196 4131  0  7 83  9  0 
0  0      0   1272     16   6344    0    0     7     7 1046 3939  0  2 98  0  0 
0  0      0   1272     16   6344    0    0     4   943 1206 3840  0  1 86 12  0 
2  0      0   1272     16   6344    0    0     9    38 1033 3891  0  1 99  0  0
当值为60时:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so   bi    bo   in   cs us sy id wa st 
0  1      0   1268     17   6347    0    0     7     3    1    1  0  2 91  6  0 
0  0      0   1267     17   6347    0    0     7   526 1163 3875  0  2 92  5  0 
0  0      0   1267     17   6347    0    0     8     4 1025 3934  0  1 98  0  0 
2  0      0   1267     17   6347    0    0     6    17 1032 3917  0  1 98  0  0 
0  0      0   1267     17   6348    0    0     9    34 1036 3909  0  2 98  0  0 
1  0      0   1267     17   6348    0    0     9    16 1033 3990  0  1 98  0  0 
0  1      0   1267     17   6348    0    0     6  1172 1195 3936  0  3 83 14  0 
0  0      0   1266     17   6348    0    0    12   958 1252 3988  0  3 64 33  0 
1  0      0   1266     17   6348    0    0    32   372 1096 3875  0  1 97  2  0 
0  0      0   1266     17   6348    0    0     7     4 1034 3838  0  1 98  0  0 
0  0      0   1266     17   6348    0    0    13    18 1030 3925  0  2 98  0  0 
0  1      0   1266     17   6348    0    0     4  1100 1200 3862  0  2 83 15  0 
0  0      0   1266     17   6348    0    0     4   350 1139 3921  0  2 88 10  0 
0  0      0   1266     17   6348    0    0     6     0 1028 3814  0  2 97  0  0 
1  0      0   1266     17   6349    0    0    10   769 1179 3886  0  2 83 15  0 
0  0      0   1266     17   6349    0    0     7   411 1100 4004  0  1 96  3  0 
0  1      0   1266     17   6349    0    0    10   578 1118 3915  0  2 94  5  0 
0  0      0   1266     17   6349    0    0    26    85 1077 3865  0  1 92  7  0 
0  0      0   1266     17   6349    0    0     6    18 1029 3879  0  1 98  0  0 
0  2      0   1265     17   6349    0    0    10   658 1116 3963  0  1 92  6  0 
0  0      0   1265     17   6349    0    0    10   798 1212 3901  0  3 71 27  0 
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
1  0      0   1265     17   6349    0    0    10   245 1077 3900  0  1 98  1  0 
0  0      0   1264     17   6350    0    0    37    13 1044 3925  0  2 97  1  0 
0  0      0   1264     17   6350    0    0     6   848 1187 3892  0  2 83 15  0 
0  3      0   1264     17   6350    0    0     6   577 1119 3920  0  1 93  5  0 
1  0      0   1264     17   6350    0    0     4    84 1062 3890  0  1 96  2  0 
0  0      0   1264     17   6350    0    0    10    18 1034 3824  0  2 97  0  0 
0  0      0   1264     17   6350    0    0     6     0 1025 3931  0  1 98  0  0 
0  1      0   1264     17   6350    0    0    10   621 1110 3891  0  2 94  4  0 
1  0      0   1264     17   6350    0    0     8   466 1144 3855  0  2 77 21  0 
0  0      0   1264     17   6350    0    0     8     8 1031 3916  0  1 98  0  0 
1  0      0   1264     17   6350    0    0     8    12 1028 3914  0  1 98  0  0 
1  2      0   1263     17   6351    0    0    10   929 1182 3962  0  3 85 12  0 
2  1      0   1263     17   6351    0    0    10  1089 1275 3988  0  2 58 40  0 
0  0      0   1263     17   6351    0    0    11   358 1142 3954  0  2 88 10  0 
2  0      0   1263     17   6351    0    0     6     0 1026 3853  0  1 99  0  0 
0  0      0   1263     17   6351    0    0     6     0 1029 3990  0  1 98  0  0 
1  0      0   1263     17   6351    0    0     6    11 1029 3856  0  1 98  0  0 
2  1      0   1263     17   6351    0    0     7  1276 1204 3885  0  3 80 18  0 
1  0      0   1263     17   6351    0    0    14   514 1156 3849  0  2 77 21  0 
0  1      0   1251     17   6353    0    0   393   736 1234 4059  2  2 85 11  0
当值为100时:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
0  6      0   1202     18   6411    0    0     7     3    1    0  0  2 91  6  0 
0  6      0   1201     18   6411    0    0    66  1153 1189 3604  0  3 45 53  0 
1  3      0   1200     18   6412    0    0   189   930 1226 8164  1  8 49 41  0 
0  6      0   1200     18   6412    0    0    44  1134 1261 3937  0  2 53 45  0 
0  4      0   1200     18   6413    0    0    98  1118 1229 3868  0  2 46 52  0 
2  3      0   1200     18   6413    0    0    45  1245 1251 3798  0  2 49 49  0 
1  4      0   1199     18   6413    0    0    74   922 1218 3853  0  2 53 45  0 
1  5      0   1198     18   6415    0    0   194  1084 1225 4919  0  4 51 44  0 
0  3      0   1198     18   6415    0    0    52   930 1192 3577  0  3 51 45  0 
1  0      0   1197     18   6416    0    0   147   831 1222 3995  0 13 51 36  0 
1  1      0   1197     18   6416    0    0    48  3240 1256 4557  1  5 46 48  0 
0  2      0   1196     18   6417    0    0    38  3730 1267 4536  0  5 53 42  0 
1  2      0   1195     18   6417    0    0    42  3336 1238 4048  0  3 51 45  0 
1  4      0   1195     18   6418    0    0    50  2759 1207 4237  1  5 52 42  0 
0  7      0   1195     18   6418    0    0    48  2201 1229 4138  0  4 41 54  0 
2  3      0   1194     19   6420    0    0    28  2360 1241 3913  0  2 53 44  0 
0  4      0   1193     19   6420    0    0    63  3812 1209 4344  1  5 46 48  0 
0  4      0   1193     19   6421    0    0   120  3942 1199 4452  1  5 43 52  0 
0  3      0   1192     19   6421    0    0    38  2963 1231 4272  0  4 45 51  0 
0  4      0   1191     19   6421    0    0    37  2784 1202 4373  1  5 49 46  0 
1  4      0   1191     19   6421    0    0    24  2558 1242 3909  0  2 54 43  0 
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
0  5      0   1191     19   6422    0    0    36  1774 1212 4009  0  4 47 50  0 
0  2      0   1191     19   6422    0    0    29  4292 1208 4479  0  4 48 47  0 
0  4      0   1191     19   6422    0    0    44  3392 1204 4705  1  5 45 49  0 
1  2      0   1190     19   6423    0    0    56  3950 1250 4541  1  5 55 40  0 
0  2      0   1190     19   6423    0    0    67   877 1198 3515  0  2 54 44  0 
1  2      0   1189     19   6423    0    0    67   928 1201 3589  0  1 57 41  0 
1  3      0   1189     19   6424    0    0    69  1488 1190 3569  0  2 50 49  0 
0  3      0   1189     19   6424    0    0    61  2230 1228 3828  0  2 53 44  0 
1  6      0   1189     19   6424    0    0    30  2662 1275 4186  0  3 38 58  0 
3  2      0   1190     19   6424    0    0    22  1932 1274 4297  0 26 32 42  0 
0  4      0   1190     19   6425    0    0    56  1692 1289 4160  0 10 46 44  0 
1  0      0   1188     19   6427    0    0   412   795 1216 4795  0 13 56 31  0 
0  2      0   1188     19   6427    0    0   127  1854 1298 4400  0 13 52 35  0 
0  5      0   1187     19   6428    0    0    34  6174 1250 4808  0 11 45 44  0 
0  3      0   1187     19   6428    0    0   110  1285 1218 3507  0  1 52 46  0 
0  1      0   1185     19   6430    0    0   306   938 1215 3890  0  2 59 40  0 
1  3      0   1185     19   6431    0    0    52  3722 1207 4013  0  2 57 41  0 
0  4      0   1185     19   6431    0    0    17  9450 1205 5760  1  9 41 50  0 
1  2      0   1184     19   6431    0    0    16  7072 1188 4330  0  4 55 41  0 
2  4      0   1184     19   6431    0    0    20  7046 1241 5521  1  8 48 44  0 
1  3      0   1183     19   6432    0    0    46  7037 1190 4488  0  8 37 54  0

   发现什么了吗?很明显当值为100时,wa基本为50左右的值,这表示50%的CPU时间都在等待IO设备就绪(大好的CPU资源就这样被浪费了!)现在你明白瓶颈在哪里了吧?对,就是硬盘。说明我实验的这台机器硬盘IO的处理能力是最影响性能的了。那么该怎么解决呢?当然了,换个转速更快的硬盘当然可以,还有呢?增加内存有可能也可以。增加了内存以后,再把swappiness的值设小点,以减少硬盘IO的操作。内存够大时,无论页面文件的使用频率是高还是低都放在内存里,无须使用虚拟内存。

   但是在这个例子中,swpd的值始终为0,这表示没有虚拟文件被使用。这说明内存容量是足够的,即使再增加内存,作用也不大。最好的办法就是更换硬盘了。

   如何改变swapiness的值?你可以运行'echo 数值 > /proc/sys/vm/swapiness’ 或者 'sysctl –w vm.swappiness = 数值' 来修改内核中的实时参数。如果想机器在重启之后仍然保持这个数值的话,就需要在'/etc/sysctl.conf’文件中加上'vm.swappiness = 数值' 这一行。

(转)Linux性能调优之虚拟内存篇的更多相关文章

  1. linux性能调优概述

    - 什么是性能调优?(what) - 为什么需要性能调优?(why) - 什么时候需要性能调优?(when) - 什么地方需要性能调优?(where) - 什么人来进行性能调优?(who) - 怎么样 ...

  2. 转载linux性能调优工具

    Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具,各种资源应有尽有,大量干货,强烈建议收藏.

  3. <Linux性能调优指南>主要思路流程

    网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines ...

  4. linux 性能调优工具参考 (linux performance tools)

    之前发现几张图对于linux使用者有着较强的参考意义,下面对其进行简单备忘: # linux 静态信息查看工具 # linux 性能测试工具 benchmark # linux 性能观测工具 # li ...

  5. JVM性能调优实践——JVM篇

    前言 在遇到实际性能问题时,除了关注系统性能指标.还要结合应用程序的系统的日志.堆栈信息.GClog.threaddump等数据进行问题分析和定位.关于性能指标分析可以参考前一篇JVM性能调优实践-- ...

  6. [Linux性能调优] 磁盘I/O队列调度策略

    这两天的一个小任务是MongoDB服务器的调优,恰好这段时间对Linux的各种性能诊断.调优感兴趣,就顺着这个任务多翻了些书和文章. 新学到的一个东西是 Linux磁盘的I/O队列调度策略,至少MyS ...

  7. linux性能调优

    1-1.0  关于ulimit linux对每个用户,系统限制其最大进程数.为提高性能,可根据设备资源情况,设置各linux用户最大进程数. [Qrui@root ~]#ulimit -a 用来显示当 ...

  8. Nginx + Linux 性能调优

    Nginx以高性能负载均衡.缓存和web服务器出名,支撑着世界上繁忙网站中的40%.大多数使用场景下,Nginx和Linux系统的默认配置表现较好,但是仍有必要做一些调优以期达到最佳性能. 这篇文章讨 ...

  9. Linux性能调优之gprof和oprofile

    为了更好的优化程序性能,我们必须找到性能瓶颈点,“好钢用在刀刃上”才能取 得好的效果,否则可能白做工作. 为了找到关键路径,我们可以使用profilng技术,在linux平台上,我们可以使用gprof ...

随机推荐

  1. nginx 流媒体 flv 播放 以及上传大小 配置文件设置

    nginx 流媒体 flv 播放 以及上传大小 配置文件设置   server {listen 80;server_name localhost;root /www/web/default;index ...

  2. PHP 页面编码声明方法(header或meta)

    本文为大家介绍了二种页面编码的声明方法,一种是使用php中的header函数来向客户端发送header头,一种是使用html中的meta标签来生明页面编码,本文分别对他们如何使用进行了说明,感兴趣的同 ...

  3. 【JavsScript】XMLHttpRequest Level 2 使用指南

    XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信. 最早,微软在IE 5引进了这个接口.因为它太有用,其他浏览器也模仿部署了,ajax操作因此得以诞生. ...

  4. 23+ Useful HTML5 Open Source Online Video Players & Libraries,

    Akamai’s Open Video Player for HTML5 <video> Akamai has released a new Open Video Player for H ...

  5. 使用javaScript解决asp.net中mvc使用ajax提交数组参数的匹配问题

    想到在asp.net的mvc中如果使用ajax向服务端传递参数时如果参数是一个类或者是个数组(或List集合)以及更复杂的对象时,服务端总是会发生取不到值的情况,当然网上也有很多解决的例子,但都是在服 ...

  6. gradle的maven plugin使用

    在分布式系统开发中,基于gradle的项目,要共享jar一般是借助maven私服.那么gradle的maven插件如何做到上传binary jar,source jar, javadoc jar到私服 ...

  7. 关于android:inputType属性的说明

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content&q ...

  8. TextRank算法提取关键词的Java实现

    转载:码农场 » TextRank算法提取关键词的Java实现 谈起自动摘要算法,常见的并且最易实现的当属TF-IDF,但是感觉TF-IDF效果一般,不如TextRank好. TextRank是在 G ...

  9. iOS-UISearchBar和UISearchController(参考网友来练习一下)

    #import "ViewController.h" #import "TestCell.h" @interface ViewController ()< ...

  10. mina 字节数组编解码器的写法 II

    I 里面的写法不够严谨,这也是我之前说它简陋的主要原因,下面来个更加严谨.完整一点儿的: ByteArrayEncoder.java package org.bruce.mina.cpp.codec; ...