简单地说,虚拟内存就是硬盘中的一块区域,它用来存放内存里使用频率不高的页面文件。好处是为了提高内存的利用率 - 让使用频率高的页面文件活动在内存区域中,提高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. iOS开发——UI篇Swift篇&UISegmentedControl

    UISegmentedControl override func viewDidLoad() { super.viewDidLoad() titleLabel.text = titleString / ...

  2. listen和accept函数

    listen函数是用来设置监听连接的句柄和队列 当listen函数执行完成以后,服务端就已经可以接受客户端来的新连接了,新连接完成以后listen会把客户端的ip,port和连接句柄放在监听队列里面, ...

  3. careercup-高等难度 18.9

    18.9 随机生成一些数字并传入某个方法.编写一个程序,每当收到新字符数字时,找出并记录中位数. 类似:设计一个数据结构,包括两个函数,插入数据和获得中位数 解法: 一种解法是使用两个优先级堆:一个大 ...

  4. linux入侵检测系统snort安装配置

    队长让俺瞅瞅snort,没想到安装配置都遇到问题...整理下过程,给跟我一样的家伙看看.. 由于本人机器是ubuntu,apt-get 几下就可以了,其实网上有不少这样的文章...之所以还要写就是.. ...

  5. Golang学习 - strconv 包

    ------------------------------------------------------------ // 将布尔值转换为字符串 true 或 false func FormatB ...

  6. A标签使用javascript:伪协议

    一.前言 今天,遇到一个别人挖的坑,问题是这样的. 做了一个列表页,可以筛选数据,有很多筛条件.主要是有input复选框和<a>标签两种.如图: 其中房价的筛选条件使用<a>标 ...

  7. excel,access常用公式函数VBA代码汇总文章

    批量将CSV导入access alt+f11 打开access的vbe环境 Sub test() Dim SQL As String Dim MyPath As String Dim MyPathDb ...

  8. IIS 之 HTTP错误 404.17 - Not Found(请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。)

    问题描述:HTTP 404.17 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理 .   出现这种情况的原因通常是因为先安装了Framew ...

  9. bigDecimal 使用小结

    关于四舍五入: 
ROUND_HALF_UP: 遇到.5的情况时往上近似,例: 1.5 ->;2 
ROUND_HALF_DOWN : 遇到.5的情况时往下近似,例: 1.5 ->;1 注 ...

  10. NserviceBus简介

    NServiceBus 简介 为面向业务服务合作而设计的NServiceBus不像WCF一样是RPC技术的替代者.成功的SOA和领域模型(DDD)项目使用了一些混合的技术和方法,不仅仅是使用NServ ...