![开发人员笔记本(WAMP/LAMP 堆栈)使用 SSD 时会出现性能问题吗?](https://linux22.com/image/1280297/%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E7%AC%94%E8%AE%B0%E6%9C%AC%EF%BC%88WAMP%2FLAMP%20%E5%A0%86%E6%A0%88%EF%BC%89%E4%BD%BF%E7%94%A8%20SSD%20%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%E5%90%97%EF%BC%9F.png)
我是一名 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 的配置在所有环境中几乎相同。我开始进行大量基准测试和分析,以下是我发现的内容:
所有常规基准测试(Performance Test 7.0、HDTune Pro、wPrime2 等)都为这款新笔记本带来了巨大优势。这没什么好惊讶的。特定磁盘测试显示,SSD 的读/写操作峰值约为 380M/160M,所有不同大小的块操作也表现良好。
开始使用 Apache Benchmark 对一个小型静态 HTML 文件进行 Apache 性能基准测试(10 个并发线程,500 次迭代)。
- 旧笔记本:最小 47ms,中位数 111ms,最大 156ms
- 新的 WAMP 堆栈:最小 71 毫秒,中位数 135 毫秒,最大 296 毫秒
- 新的 LAMP 堆栈(在 VirtualBox 中):最小 6ms,中位数 46ms,最大 175ms
这里我不明白为什么原生 WAMP 堆栈的表现如此糟糕,但至少 LAMP 环境带来了预期的速度。Apache 对非缓存 PHP 内容的性能测量。PHP 运行 1000 次循环并生成 sha1(uniqid()) inisde。同样,基准测试使用了 10 个并发线程和 500 次迭代。
- 旧笔记本:最小 0ms,中位数 39ms,最大 218ms
- 新的 WAMP 堆栈:最小 20 毫秒,中位数 61 毫秒,最大 186 毫秒
- 新的 LAMP 堆栈(在 VirtualBox 中):最小 124 毫秒,中位数 704 毫秒,最大 2463 毫秒
这什么鬼?新版 LAMP 表现惨不忍睹,就连新版原生 WAMP 也被老版笔记本超越了。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 环境在高并发性下表现如此糟糕。最后我进行了一个包含许多 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 省电(电池)
第一个设置为“节能”,第二个设置为“长电池寿命”。我将两个都设置为正常,结果,我在所有测试用例中都获得了大幅改善的响应时间。
引用此帖子:
根据几位成员进行的基准测试,配备英特尔 HM55 和 PM55 的笔记本电脑似乎无法充分利用快速 SSD。这些芯片组在现代笔记本电脑中非常常见。性能下降在 4K 随机读写性能中尤为明显。问题似乎是由积极实施省电功能引起的……
当然,现在风扇每隔 5 秒左右就会旋转一次,这很烦人,但至少我能完成我的工作。