开发人员笔记本(WAMP/LAMP 堆栈)使用 SSD 时会出现性能问题吗?

开发人员笔记本(WAMP/LAMP 堆栈)使用 SSD 时会出现性能问题吗?

我是一名 Web 应用程序开发人员,使用笔记本电脑作为独立开发环境 (WAMP 堆栈)。我刚刚从配备 2GB RAM 和 SATA HDD 的 Core2 Duo Vista 32 位笔记本电脑换成了配备 4GB RAM 和 128 GB SSD (Corsair P3 128) 的 i5-2520M Windows 7 64 位笔记本电脑。

我的初始体验符合我的预期,快速启动,快速加载所有应用程序(Eclipse 现在只需 5 秒,而我以前的笔记本上则需要 30 秒),总体体验很棒。然后我开始构建我的开发堆栈,既有 LAMP(使用带有 Debian 客户端的 VirtualBox),也有 WAMP(Windows 原生 Apache + MySQL + PHP)。我想比较一下这两个。

这一切仍然运行良好,然后我开始将我的项目拉入这些堆栈。但令人不快的是,其中一个项目的响应时间比我的旧笔记本要差很多(VirtualBox 和 WAMP 堆栈都是如此)。Apache、PHP 和 MySQL 的配置在所有环境中几乎相同。我开始进行大量基准测试和分析,以下是我发现的内容:

  1. 所有常规基准测试(Performance Test 7.0、HDTune Pro、wPrime2 等)都为这款新笔记本带来了巨大优势。这没什么好惊讶的。特定磁盘测试显示,SSD 的读/写操作峰值约为 380M/160M,所有不同大小的块操作也表现良好。

  2. 开始使用 Apache Benchmark 对一个小型静态 HTML 文件进行 Apache 性能基准测试(10 个并发线程,500 次迭代)。

    • 旧笔记本:最小 47ms,中位数 111ms,最大 156ms
    • 新的 WAMP 堆栈:最小 71 毫秒,中位数 135 毫秒,最大 296 毫秒
    • 新的 LAMP 堆栈(在 VirtualBox 中):最小 6ms,中位数 46ms,最大 175ms


    这里我不明白为什么原生 WAMP 堆栈的表现如此糟糕,但至少 LAMP 环境带来了预期的速度。

  3. Apache 对非缓存 PHP 内容的性能测量。PHP 运行 1000 次循环并生成 sha1(uniqid()) inisde。同样,基准测试使用了 10 个并发线程和 500 次迭代。

    • 旧笔记本:最小 0ms,中位数 39ms,最大 218ms
    • 新的 WAMP 堆栈:最小 20 毫秒,中位数 61 毫秒,最大 186 毫秒
    • 新的 LAMP 堆栈(在 VirtualBox 中):最小 124 毫秒,中位数 704 毫秒,最大 2463 毫秒


    这什么鬼?新版 LAMP 表现惨不忍睹,就连新版原生 WAMP 也被老版笔记本超越了。

  4. PHP + MySQL 测试。测试包括连接到数据库并使用 INNER JOIN 从表中读取单个记录,该操作在另外 3 个(索引)表上进行,在循环中重复 100 次。数据库相同。基准测试使用了 10 个并发线程和 100 次迭代。

    • 旧笔记本:最小 1201ms,中位数 1734ms,最大 3728ms
    • 新的 WAMP 堆栈:最小 367 毫秒,中位数 675 毫秒,最大 1893 毫秒
    • 新的 LAMP 堆栈(在 VirtualBox 中):最小 1410 毫秒,中位数 3659 毫秒,最大 5045 毫秒


    将并发度设置为 1(而不是 10)进行相同的测试:

    • 旧笔记本:最小 1201ms,中位数 1261ms,最大 1357ms
    • 新的 WAMP 堆栈:最小 399 毫秒,中位数 483 毫秒,最大 539 毫秒
    • 新的 LAMP 堆栈(在 VirtualBox 中):最小 285 毫秒,中位数 348 毫秒,最大 444 毫秒


    严格来说,就我的目的而言,由于我使用的是自包含的开发环境(= 低并发性),因此我对第二次测试的结果感到满意。虽然我不知道为什么 VirtualBox 环境在高并发性下表现如此糟糕。

  5. 最后我进行了一个包含许多 php 文件的测试。我在开头提到的那个性能很差的应用程序,有一个很重的引导程序,在初始化时加载了数百个小库和配置文件。所以这个测试没有做其他事情,只是包含了大约 100 个文件。并发设置为 1,100 次迭代:

    • 旧笔记本:最小 140ms,中位数 168ms,最大 406ms
    • 新的 WAMP 堆栈:最小 434 毫秒,中位数 488 毫秒,最大 604 毫秒
    • 新的 LAMP 堆栈(在 VirtualBox 中):最小 413 毫秒,中位数 1040 毫秒,最大 1921 毫秒


    即使我认为 VirtualBox 通过共享文件夹访问这些文件,这会稍微减慢速度,我仍然不明白旧笔记本的性能为何会比这两种新配置好得多。我认为这是性能缓慢的真正根源,因为应用程序使用了更多的包含,并且整个引导过程将在页面请求中发生多次(例如,对于每个 AJAX 调用)。

总而言之,我现在有一台全新的高性能笔记本电脑,它可以在 20 秒内加载同一页面,而我的旧笔记本电脑则需要 5-7 秒。不用说,我现在不是一个很开心的人。

您认为我为什么会遇到这些糟糕的性能值?我有什么办法可以补救这种情况?

看来我终于找到了问题的根源,显然 SSD 在配备 Intel HM55 或 PM55 芯片组的笔记本电脑中使用时可能会出现性能下降。请参阅下面我自己的完整回答。

答案1

换句话说,磁盘级基准测试为您的 SSD 提供了出色的结果,但在实际使用时,磁盘速度非常慢。因此,有些东西减慢了速度,使得文件访问速度比预期的要慢得多。

可能有几个原因:

  • 最有可能的是:有杀毒软件。有些杀毒软件真的是基准杀手,如果不测试的话,你很难预测它们会对性能产生什么影响。

  • 其他因素导致文件访问速度变慢。每次你似乎都在对少量数据进行许多操作测试。但是当你读取或写入 10 GB 的文件时,性能如何?

  • 操作系统相关配置可能有所不同。例如,操作系统在装有硬盘的机器上使用缓存来处理小文件,但在装有 SSD 的机器上则不会。在这种情况下,基准测试对第一台机器来说是错误的,因为您实际上并没有测试硬盘的速度。

  • 磁盘相关配置可能有所不同。与写入缓存策略(在 Windows 中)相关的选项可能会影响性能。

  • SSD 可能无法正常运行。

答案2

经过一周的漫长努力,我终于找到了一些可以带来预期效果的设置。(这是一台富士通 LIFEBOOK S751 笔记本电脑,配备英特尔 HM65 芯片组和基于 Phoenix TrustedCore Notebook 的 BIOS)

在 BIOS 中的“高级/杂项”设置、“硬件电源管理”部分中,有两个配置选项

  • 空闲状态下的 CPU 节能 (AC)
  • 空闲状态下的 CPU 省电(电池)

第一个设置为“节能”,第二个设置为“长电池寿命”。我将两个都设置为正常,结果,我在所有测试用例中都获得了大幅改善的响应时间。

显然其他人也遇到了这个问题: http://forum.notebookreview.com/solid-state-drives-ssds-flash-storage/513313-laptops-w-intel-series-5-chipset-can-not-take-full-advantage-fast-ssds.html

引用此帖子:

根据几位成员进行的基准测试,配备英特尔 HM55 和 PM55 的笔记本电脑似乎无法充分利用快速 SSD。这些芯片组在现代笔记本电脑中非常常见。性能下降在 4K 随机读写性能中尤为明显。问题似乎是由积极实施省电功能引起的……

当然,现在风扇每隔 5 秒左右就会旋转一次,这很烦人,但至少我能完成我的工作。

相关内容