以下摘抄国外人的性能测试,大致结论如下:
使用mysql的场景下,
1. A点: 当所需要的数据都在pool中的时候,fusion io, ssd, hdd的性能基本一样,数据都在内存中,fusion io在自己的cache中。
2. B点: 当10%的数据在pool之外的情况下,数据读取牵涉到硬盘的io,这个时候tps迅速减少,最高值是当前tps的2.6倍。此时使用ssd,fusion io会使tps有比hdd的提升。 相比而言此时的fusion和ssd对于tps的提升量比较,fusion超ssd 1.3倍。
3. C点:此时tps较少,使用fusion和ssd对于当前tps有大幅度提升。fusion 5倍,ssd 2.2倍。
可以这样理解,若此时pool的大小已经很大,再添加已经很困难了。这个时候用fusion和ssd都是值得的选择,但是成本上需要考虑。 但如果这个时候,pool很小,那么增加pool的大小可能比使用fusion和ssd要来的实惠。
While a scale-out solution has traditionally been popular for MySQL, it’s interesting to see what room we now have to scale up – cheap memory, fast storage, better power efficiency. There certainly are a lot of options now – I’ve been meeting about a customer/week using Fusion-IO cards. One interesting choice I’ve seen people make however, is buying an SSD when they still have a lot of pages read/second – I would have preferred to buy memory instead, and use the storage device for writes.
Here’s the benchmark I came up with to confirm if this is the case:
- Percona-XtraDB-9.1 release
- Sysbench OLTP workload with 80 million rows (about 18GB worth of data+indexes)
- XFS Filesystem mounted with nobarrier option.
- Tests run with:
- RAID10 with BBU over 8 disks
- Intel SSD X25-E 32GB
- FusionIO 320GB MLC
- For each test, run with a buffer pool of between 2G and 22G (to test performance compared to memory fit).
- Hardware was our Dell 900 (specs here).
To start with, we have a test on the RAID10 storage to establish a baseline. The Y axis is transactions/second (more is better), the X axis is the size of innodb_buffer_pool_size:
Let me point out three interesting characteristics about this benchmark:
- The A arrow is when data fits completely in the buffer pool (best performance). It’s important to point out that once you hit this point, a further increase in memory at all.
- The B arrow is where the data just started to exceed the size of the buffer pool. This is the most painful point for many customers – because while memory decreased by only ~10% the performance dropped by 2.6 times! In production this usually matches the description of “Last week everything was fine.. but it’s just getting slower and slower!”. I would suggest that adding memory is by far the best thing to do here.
- The C arrow shows where data is approximately three times the buffer pool. This is an interesting point to zoom in on – since you may not be able to justify the cost of the memory, but an SSD might be a good fit:
Where the C arrow was, in this graph a Fusion-IO card improves performance by about five times (or 2x with an Intel SSD). To get the same improvement with memory, you would have needed to add 60% more memory -or- 260% more memory for a 5x improvement. Imagine a situation where your C point is when you have 32GB of RAM and 100GB of data. Than it gets interesting:
- Can you easily add another 32G RAM (are your memory slots already filled?)
- Does your budget allow to install SSD cards? (You may still need more than one, since they are all relatively small. There are already appliances on the market which use 8 Intel SSD devices).
- Is a 2x or 5x improvement enough? There are more wins to be had if you can afford to buy all the memory that is required.
The workload here is designed to keep as much of the data hot as possible, but I guess the main lesson here is not to underestimate the size of your “active set” of data. For some people who just append data to some sort of logging table it may only need to be a small percentage – but in other cases it can be considerably higher. If you don’t know what your working set is – ask us!
Important note: This graph and these results are valid only for sysbench uniform. In your particular workload the points B and C may be located in differently.
Raw results:
Buffer pool, GB |
FusionIO |
Intel SSD |
RAID 10 |
2 |
450.3 |
186.33 |
80.67 |
4 |
538.19 |
230.35 |
99.73 |
6 |
608.15 |
268.18 |
121.71 |
8 |
679.44 |
324.03 |
201.74 |
10 |
769.44 |
407.56 |
252.84 |
12 |
855.89 |
511.49 |
324.38 |
14 |
976.74 |
664.38 |
429.15 |
16 |
1127.23 |
836.17 |
579.29 |
18 |
1471.98 |
1236.9 |
934.78 |
20 |
2536.16 |
2485.63 |
2486.88 |
22 |
2433.13 |
2492.06 |
2448.88 |
分享到:
相关推荐
What Every Programmer Should Know About Memory ,经典著作
(a) I, II, and III (b) I and II (c) I and III (d) II and III Correct answer is (d) Your score on this question is: 10.00 Feedback: (d) ----------------------------------------------...
Memory leaks occur when a program allocates memory but fails to release it back to the system, causing the application to consume more and more memory over time. This can lead to poor performance and ...
这是Ulrich Drepper的经典文章的英文原版,Ulrich Drepper是著名的德国工程师,是Glibc的第一代大当家(由于独断专行现在已经被褫夺了全力)。此文图文并茂的介绍了 RAM/DRAM的硬件原理、CPU的多级缓存机制、DMA原理...
A 32-bit process is normally limited to addressing 2 gigabytes (GB) of memory, or 3 GB if the system was booted using the /3G boot switch even if there is more physical memory available. By leveraging...
随着技术的进步,新的内存技术如Non-Volatile Memory(NVM)和高带宽内存(HBM)将改变内存系统的架构。程序员需要关注这些新技术,以便适应未来的硬件环境。 9. 附录和参考文献 文档的最后提供了详细的参考资料和...
这篇资料是针对湖北省武汉市北大附中武汉为明实验中学八年级学生的一份英语基础练习,主要涵盖Unit 2 "What should I do?" 的内容。该练习分为三个部分:听力、基础知识和单项选择,旨在帮助学生巩固和提升英语听、...
- **描述**:“Nowadays the newspaper possesses considerable value Everybody should read it. It supplies us with a variety of news every day. It tells us the political situation of the world. If we ...
which-programming-language-should-i-learn-first-infographic.png
I Think I Need a Houseboat Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 41126 Accepted: 16537 Description Fred Mapper is considering purchasing some land in Louisiana to build his ...
现代计算机的内存子系统由多个组件组成,包括主存储器(Main Memory)、缓存(Cache)和存储器(Storage)。主存储器是计算机的主要存储设备,用于存储程序和数据。缓存是高速缓存器,用于存储频繁访问的数据,以...
2) write all of the adjacent cells with a one, one or more times 3) check that the first cell still has a zero It should be obvious that this strategy requires an exact knowledge of how the memory ...
---Data Memory (Single-Ported Read/Write memory)--- • Generics - Data memory size/depth (data_mem_depth with default value of 117 locations) - Data memory width (data_mem_width with default value ...
" 可以表达为"What should I do if everyone else brings a gift?" - "如果……将会怎么样?" 通常用"If…, what would happen?" 或 "What would happen if…"来表达。 例如: - 如果我不知道去医院的路怎么办? ...
- (a) to indicate where the decimal or binary point should be - (b) to specify the base as binary, octal, or hexadecimal - (c) to specify the superscript - (d) the mantissa is raised to the power of ...
data or cache tables use XMS memory A "stand alone" UIDE B switch no cache or diskettes can be used in test or diagnostic work and takes 3664 bytes of upper DOS memory If its N2 switch ...
virtual Listing sort(string field); This is a new method. This method returns a copy of the ... Regardless of the STL functions used, a solution should not use any for-loops or while-loops. Files
### SSD3选择题答案解析 #### 1. Which method must exist in every Java application? - **选项**: - (a) main - (b) paint - (c) begin - (d) init - **正确答案**:(a) main - **解析**:每个Java应用程序...
Look for something with good battery life and a fast processor. A. I need it for gaming B. I don’t need anything fancy C. I want the latest model D. I’m not very tech-savvy 答案: B 13.Manager: ...
I deferred from testing the get test over 100 million record as it would require a huge array in memory to store the Guid keys for finding later, that is why there is a NT (not tested) in the table. ...