在VMware环境中优化SUSE Linux的性能

日期: 2010-12-07 作者:Sander van Vugt翻译:陈中华 来源:TechTarget中国 英文

由于现在VMware向购买Vsphere的客户免费提供SUSE Linux Enterprise Server(SLES),所以许多公司针对他们的Linux需求都部署了SUSE Linux。然而正如本文所描述的一样,即使你已经安装了专门针对VMware环境使用而开发的SUSE内核,你仍然可以通过进一步的性能优化来获得意想不到的收获。   对VMware环境中的SUSE进行性能优化需要两步:第一步,你必须对VMware环境进行优化。第二步,对虚拟主机的优化完成后,你还可以使用其它技术对虚拟机进行优化。

  评估性能优化   有很多先进技术可用来评估性能优化的效果。其中一个是Bonnie脚本,它是……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

由于现在VMware向购买Vsphere的客户免费提供SUSE Linux Enterprise Server(SLES),所以许多公司针对他们的Linux需求都部署了SUSE Linux。然而正如本文所描述的一样,即使你已经安装了专门针对VMware环境使用而开发的SUSE内核,你仍然可以通过进一步的性能优化来获得意想不到的收获。

  对VMware环境中的SUSE进行性能优化需要两步:第一步,你必须对VMware环境进行优化。第二步,对虚拟主机的优化完成后,你还可以使用其它技术对虚拟机进行优化。

  评估性能优化

  有很多先进技术可用来评估性能优化的效果。其中一个是Bonnie脚本,它是一套shell脚本,它用不同的方法测试读写性能。如果你真想看到性能优化结果的详细信息,使用Bonnie脚本是一个不错的主意。但如果你只是想了解虚拟机的基本状况,你可以使用更简单的方法让你一目了然。

  你可以在Linux shell环境下使用下面的命令来获得当前系统性能的基本状况:

time dd if=/dev/zero of=/1gfile bs=1M count=1024

  使用此命令,你将可以在指定的位置创建一个1 GB的文件。例如,你可以把它放在根文件系统来测试根文件系统的性能, 或者把它放在一个挂载的SAN分区中来测量SAN设备的性能。这个命令的输出如下所示:

root@lassen:/# time dd if=/dev/zero of=/1gfile bs=1M count=1024
 1024+0 records in
 1024+0 records out
 1073741824 bytes (1.1 GB) copied, 8.86777 s, 121 MB/s
 real      0m8.931s user      0m0.000s sys       0m1.890s

  过去,你可以看到内核在处理此命令时真正花费的时间。找到“real 0m8.931s” 这一行,你可以看到你的计算机完成这项任务耗费的时间。这个时间指的是这项任务从开始到结束花费的时间。在此期间,调度器也在其它任务之间进行切换。所以如果你的服务器在多个任务的作用下处于非常繁忙的状态时,这个参数便不能给出一个非常准确的读数。但是,如果你的计算机没有运行任何重要的进程,它便可以给你提供一个不错的指导。这种情况可以用下面的公式来表示:

real – sys = overhead(实际-系统=开销)

  在任何时候系统都会有一些开销,上面显示的数字实际上是相当不错。但是,显示的这两个数字也往往有巨大的差异,在VMware中虚拟SUSE Linux时往往就是这样。举例来说,写1GB的文件,实际时间有可能超过一分钟,但系统的时间却仍是两秒钟!

  优化VMware

  为发挥SUSE Linux的最大性能而对VMware的优化其实很简单。默认情况下,VMware为虚拟磁盘设备安装的是LSI Logic控制器。这个控制器可以捕获并模拟所有由虚拟机生成的数据并对它们进行处理,为了处理这些数据,控制器需要做很多的工作。如果要解决这个问题,您应该将LSI Logic控制器替换为VMware半虚拟化磁盘设备。由于VMware 半虚拟化磁盘驱动器专门针对在VMware中的SUSE 内核进行过优化,你会发现当采用了这种驱动器,性能将会有巨大的提升。但也不要忘记在虚拟机中安装VMware工具。所有这些都是为了在虚拟机中使用最佳的驱动器,以便你可以在VMware这一端获得最佳的性能。

  优化SUSE

  对于SUSE Linux来说也有一些优化建议。其中第一个就是I/O调度器的行为设置, 它对于Linux操作系统来说就是如何让磁盘控制器进行工作。共有四种设置方式:

  CFQ:始终公平排队。这意味着,控制器使用最佳的平均设置,这在一个读写请求或多或少算均衡以及不同进程之间带宽平均分配的系统中效果非常好。

  Anticipatory:采用这个参数,I/O调度器将试着猜测下一次的读请求,也就意味着它会预读一些数据块。这意味着一部分内存缓冲区会被用来进行读取优化。这对于读取密集型环境非常有利,但是处理写请求就会变得很糟糕。 在最近的一些内核版本中(2.6.33和更高版本),更推荐使用CFQ。

  Deadline:在这个设定中,I/O调度器在将数据从缓冲区真正写入到磁盘之前会等待尽可能长的时间以确保找到最先需要写入的请求。使用此设置,调度器会尽可能的对I/O进行实时调度,这种方式是数据库环境的理想选择。

  Noop:因为很多现代的磁盘控制器,RAID控制器或SAN设备都已经对磁盘的读/写优化过了,所以不做任何基于Linux层面的I/O优化也很有意义。你至少可以尝试一下这个选项,以了解您的存储控制器对I/O的优化程度。

  I/O调度器的设置会写入到系统的一个文件中。 在目录/sys/block中,你会发现服务器上的每一个存储设备都对应着一个子目录,在该目录下,有文件queue/scheduler。使用cat命令可以查看其当前设置:

root@lassen:/# cat /sys/block/sda/queue/scheduler
 noop anticipatory deadline [cfq]

  正如你看到的,I/O调度器的当前设置是CFQ。当然如果你找到了其它更好的设置参数,只要执行echo命令将新的参数写入配置文件即可。

echo deadline > /sys/block/sda/queue/scheduler

  接下来,你可以测试其它参数对性能的影响。最佳的做法是把所有四个参数都测试一遍并找出最适合你的服务器负载类型的那一个。然后,你就可以将它设为启动加载。例如,使用echo命令将配置写入文件/etc/init.d /boot.local中,这样就保证了每次重新启动服务器时这个设置也同时生效。

  优化日志

  在文件系统中,日志的设置对于性能优化也很有用。所有当今的Linux文件系统都使用日志的方式以便在服务器崩溃后使恢复数据更加容易。日志的基本概念是:在写一个文件时,日志将这个事务记录下来,如果操作失败,它可以很容易地回滚到写入前的状态。但是如果你的服务器是写密集型应用,默认的日志设置可能会对写性能产生负面影响。相反,如果你的服务器是读密集型应用,你大可不必关心日志的设置,因为日志不关心读事务。

  在写负荷很重的服务器上,通过修改文件fstab来挂载文件系统时,你可以使用参数data=journal。使用此参数可以给予文件系统一定程度的保护,但它是轻量级的,这样可以确保写入文件时损失尽可能少的时间。下面几行显示的内容就类似于文件/etc / fstab中的设置:

/dev/sdg1        /           ext3     user_xattr,data=writeback      1 1

  应用此更改后,重启服务器让更改生效。

  在这里,我们已经讨论了如何在VMware服务器上优化SUSE Linux Enterprise Server的性能。使用本文所讨论的相关参数可以优化存储通道,从而让你的虚拟机运行速度更快。

相关推荐