免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 69781 | 回复: 142
打印 上一主题 下一主题

[OpenBSD] [原创]砸碎禁锢OpenBSD磁盘性能的枷锁,让OpenBSD提速50%↑!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-23 09:58 |只看该作者 |倒序浏览
作者:young_king,个人博客:http://onmp.cublog.cn,本文欢迎转载!

呵呵~~~,看到标题,不要激动,唠点废话先!

请大家在继续下面的系统调整前,先做个测试,测下自己系统目前的磁盘性能,再做调整,这样也好有个比较。

以OpenBSD 4.4为例。方法:
  1. export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
  2. pkg_add blogbench
复制代码
装好后执行:
  1. /usr/local/bin/blogbench -d /var/mysql -c 10 -i 10 -r 10 -w 10 -W 10 -s 10
复制代码
这个程序会在/var/mysql目录下进行读写的操作,可以看到进度,完成后会给个分数,如下图:



你也可以在上面指定其他的目录进行读写测试,测试完成后请删除测试目录(上面是/var/mysql)下的垃圾文件。

关于这个软件的测试,还需要再罗嗦一句:请务必在测试后删除目录中的垃圾文件,再进行下一次测试,否则对成绩有很大的影响!

接下来,就要开始对系统进行调整了,调整前,请把现在用的内核做个备份。
  1. cp /bsd /bsd.old
复制代码
这样,即便调整错误,系统无法启动,也只需用/bsd.old覆盖即可。

下面就是详细的步骤,只需简单四步,只需要十分钟,把你的磁盘提速至少50%!!!

(其实对于绝大多数人来说,只需前面两步即可)!

一、/etc/fstab调优
  1. vi /etc/fstab
复制代码
在文件系统描述符部分,加入"noatime"和"softdep"。示例如下:

/dev/wd0a / ffs rw,noatime,softdep 1 1
/dev/wd0l /home ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0e /usr ffs rw,nodev,noatime,softdep 1 2
/dev/wd0f /usr/local ffs rw,nodev,noatime,softdep 1 2
/dev/wd0g /var ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0i /var/log ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0j /var/mail ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0h /var/mysql ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0k /var/nginx ffs rw,nodev,nosuid,noatime,softdep 1 2


改完后保存退出,reboot,看能不能正常启动。

一般情况下是没有问题的,个别机器或虚拟机可能会因为兼容性的缘故,无法启动。那么就把根目录的softdep拿掉,其他目录保留,仍然会有作用。

注意:因为softdep是一种非同步的文件系统模式,在突然掉电情况下可能造成数据的丢失,关键业务请谨慎使用!

二、sysctl.conf调优

很简单:
  1. vi /etc/sysctl.conf
复制代码
跳到最后,加入下面的内容:

kern.maxvnodes=65536
kern.maxproc=65536
kern.maxfiles=65536


注意:虚拟机测试只加最上面一行kern.maxvnodes=65536即可,其他两行不必加了,否则会有各种问题。独立机器的可以加上。

保存退出,reboot。不能正常启动的就把后两行的数字调小或者禁用再试。

三、atactl打开硬盘高级功能

首先声明下,如果你是用SCSI硬盘或是SATA接口的硬盘,又或者你有硬件的RAID,那么可以飘过本文的第三和第四部分,直接进行后面的测试即可。

本部分仅针对IDE接口的硬盘。

开始之前,请检查下你机器的硬件连接情况,确保硬盘和光驱不要用同一根线连到主板上的同一个IDE插槽!并且,硬盘线应该是80线的那种。

检测一下你的硬盘是否支持一些高级功能:

  1. atactl /dev/wd0c identify
复制代码


在输出的内容中查找是否有'write cache'的字样,如是,则执行:
  1. atactl /dev/wd0c writecacheenable
复制代码

启用写入缓存。注意,如果启用这个,掉电的时候可能会丢失数据,请谨慎使用!

在输出的内容中查找是否有'read look-ahead'的字样,如是,则执行:
  1. atactl /dev/wd0c readaheadenable
复制代码

启用预读取。

在输出的内容中查找是否有'Automatic Acoustic Management feature set'的字样,如是,则执行:
  1. atactl /dev/wd0c acousticset 126
复制代码

设置为性能最大化模式,可选值:0~126。

这个要解释下。某些硬盘有所谓的性能模式和静音模式,性能模式下硬盘转速最快,传输率最高;静音模式下么,转速最低,性能最差。
上面这句就是强制这样的硬盘工作于最大性能模式,获得最大的性能提升。

注意:一般情况下,上面几句运行都应该没有问题的,不会出现错误提示。如果没有错误提示,那么就可以把上面几句加入到/etc/rc.local文件的最前面,让系统启动的时候自动运行,省去手动启动的麻烦。深入了解atactl的用法请输入:man atactl。

四、驱动参数修改(wd)

本部分仅针对IDE接口的硬盘。

输入下面的命令进行检验:

  1. dmesg | grep wd
复制代码


察看硬盘的工作模式是否正确。

一般来说,硬盘的工作模式有下面这几种:

PIO Mode 0: The fastest data transfer rate reaches 3.3 Mbyte/sec
PIO Mode 1: The fastest data transfer rate reaches 5.2 Mbyte/sec
PIO Mode 2: The fastest data transfer rate reaches 8.3 Mbyte/sec
PIO Mode 3: The fastest data transfer rate reaches 11.1Mbyte/sec
PIO Mode 4: The fastest data transfer rate reaches 16.6Mbyte/sec
PIO Mode 5: The fastest data transfer rate reaches 22.2Mbyte/sec

DMA Mode 0: The fastest data transfer rate reaches 4.16Mbyte/sec
DMA Mode 1: The fastest data transfer rate reaches 13.3Mbyte/sec
DMA Mode 2: The fastest data transfer rate reaches 16.6Mbyte/sec

Ultra DMA Mode 0: The fastest data transfer rate reaches 16.7Mbyte/sec
Ultra DMA Mode 1: The fastest data transfer rate reaches 25.0Mbyte/sec
Ultra DMA Mode 2: The fastest data transfer rate reaches 33.3Mbyte/sec
Ultra DMA Mode 3: The fastest data transfer rate reaches 44.4Mbyte/sec
Ultra DMA Mode 4: The fastest data transfer rate reaches 66.7Mbyte/sec
Ultra DMA Mode 5: The fastest data transfer rate reaches 100 Mbyte/sec


可以看到,Ultra DMA Mode传输速度是最快的了。但是由于个别硬盘会和主板上的控制器不兼容,会无法识别出正确的模式。

本部分内容就是针对这样的硬盘的。注意,不兼容的问题是少数,大多数都是兼容的。

如果上面dmesg输出的部分显示有Ultra DMA Mode *的字样,就表示你的硬盘已经被正确识别了,和主板上的控制器是兼容的,那么你就可以飘过本部分,进行测试了。否则就按下面的方法强制硬盘工作于正确的模式下。

继续下面的步骤之前,请打开机器,看下硬盘顶盖上的参数,一般都会有传输速率的说明,请在下面设置为正确的传输速率!

  1. config -e -o /bsd.new /bsd
复制代码
修改wd驱动的flags,具体需要输入的内容请看下图,需要手动输入的内容用红线表示出来了,请仔细看!



上面的修改主要是flags部分,原来是0x0,改成0xdef(Ultra DMA Mode 5)。

保存退出后,用/bsd.new内核启动下试试,如果没有问题就执行:
  1. mv /bsd.new /bsd
复制代码
如果启动有问题,就在上面输入flags的时候减小输入的数值再试:0xdac(Ultra DMA Mode 5,DMA Mode 2,PIO Mode 4)、0xcac(Ultra DMA Mode 4,DMA Mode 2,PIO Mode 4)等。深入了解请输入:man wd查阅。

好了,该调整的都调整完了,可以再用blogbench来测试磁盘性能了,下面是偶调整后的成绩:



可以看到,读和写都有了很大的提升,至少50%以上,效果非常显著!

PS.偶是虚拟机测试,受到宿主系统的影响,貌似读性能反而下降。相信单独的机器感觉会更明显!

欢迎大家进行调整测试,以及调整前后复制、拷贝文件等实际操作的变化,有什么问题请及时跟帖,让我们大家的OpenBSD都飞起来!

本文涉及的有关内容可以用man查阅,主要有wd、pciide、sd、ahci,想深入了解的朋友可以自行分析。

++++++++++++++++++++++++++++++++++
对部分回复的解答:
++++++++++++++++++++++++++++++++++

12楼、13楼:

[quote]原帖由 cnduly 于 2009-2-23 12:23 发表
让OpenBSD提速50%,吹的吧??

原帖由 cnduly 于 2009-2-23 12:27 发表
居然还是虚拟机测试



是不是吹牛,自行测试下便知!

本文对IDE硬盘有较好的效果,SCSI、SATA、RAID效果不是特别明显。

第二个问题,偶手上没有多余的机器。否则,跑出来的成绩会更好看![/quote]
++++++++++++++++++++++++++++++++++
45楼:

感谢网友zhht的热心测试!

请看截图,上面是调整前的成绩,下面是调整后的成绩:



++++++++++++++++++++++++++++++++++
125楼:

[quote]原帖由 cnduly 于 2009-2-25 10:38 发表
大概的测试了一下!! 确实有所提高!! 但是我的结果没有50%那么高!!!! 可能是机器太旧了!!! pII的机
好机,暂时没有空的,等有空闲的机再测试吧!!

[/quote]

++++++++++++++++++++++++++++++++++
129楼:
[quote]原帖由 gvim 于 2009-2-27 01:04 发表
不错的实验,十分感谢分享
如llzqq所说关键业务开启写缓冲应该慎用。
打开DMA几乎是必须的。
noatime不修改文件的访问时间,可能会影响某些系统工具的正常使用,或者某些安全因素考虑。
打开softupdate可能可以满足99%的业务,在FreeBSD的手册上说还是可能会造成文件系统损坏(虽然发生条件非常极端),可是为了最大安全还留了一手。
PS:现在的IDE磁盘标准性能估计在长也到不了什么地步了,40个脚好像用了20多个来做干扰屏蔽,再提速高频干扰更强。SATA是差分数据线抗干扰好,USB3.0的设计速度好像已经到 Gb/s,未来的速度还有很大的空间可以挖,等新硬件吧

另外,建议楼主有时间的话可否在从package中找几个测试软件对比测试一些。我记得有个bonnie++的吧。
再次感谢


过奖了!

本帖的主要出发点并没有过多的考虑数据安全的事情,主要考虑的是性能。

即如何最大限度的提高性能。如你所说,把99%的业务都提速。

至于测试软件,的确有很多,而且还很变态,一般的机器可能运行不了,所以就没做多的实验(例如sysbench,重量级,直接就把我的机器压垮了)。

日后新帖会多做试验,尽量完美!:wink:[/quote]

++++++++++++++++++++++++++++++++++
130楼:
[quote]原帖由 sxsloin 于 2009-2-27 04:43 发表
第一步我就放弃了,没装也不愿装mysql...所以不懂垃圾文件是指什么.


这个只是在/var/mysql目录中测试,目的是从侧面了解数据库的读写性能。

你可以随意指定其他的目录进行测试。

另外,packages中的测试软件还有很多,例如sysbench,可以专门针对文件系统、CPU、数据库等进行测试。

偶的机器性能太差,运行不了sysbench,否则偶就会帖出sysbench的成绩进行对比了,更有说服性。[/quote]

[ 本帖最后由 young_king 于 2009-2-27 09:28 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-02-23 10:12 |只看该作者
[attach]***[/attach]???

论坛徽章:
0
3 [报告]
发表于 2009-02-23 10:32 |只看该作者
瞧瞧

论坛徽章:
0
4 [报告]
发表于 2009-02-23 11:13 |只看该作者
看看!

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-01 06:20:00
5 [报告]
发表于 2009-02-23 11:19 |只看该作者
??

论坛徽章:
0
6 [报告]
发表于 2009-02-23 11:29 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2009-02-23 11:30 |只看该作者
学习学习!

论坛徽章:
0
8 [报告]
发表于 2009-02-23 11:45 |只看该作者
测试看下

论坛徽章:
0
9 [报告]
发表于 2009-02-23 11:46 |只看该作者
居然需要回复, 顶一个 关注

论坛徽章:
0
10 [报告]
发表于 2009-02-23 11:53 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP