QQ餐厅与系统性能模型
本文最新版已更新至:http://thinkinside.tk/2012/10/23/whats_performance.html
如果你在玩QQ餐厅的时候被老板抓到,可以理直气壮的说:“我在研究系统性能模型”。具体理由听我慢慢道来…
Table of Contents
1 QQ餐厅”系统“
QQ餐厅是一个 系统 。 其中厨师是 CPU ,服务员是 内存 ,桌椅板凳是 磁盘IO ,这些统称为系统的 资源 。 这个系统中只运行一个 应用 ,该应用只提供一个 服务 :就餐服务。显然,系统的所有资源都会用于这个服务。 QQ餐厅当然会有很多客人,称之为 并发用户数 ,或者叫 负载 。
开始的时候客人不多,桌椅板凳或厨师、服务员都可能空闲,叫做 资源闲置 ,已经使用的资源比例叫做 资源利用率 。
随着资源和人的增加,资源利用率也会逐渐增长,并最终达到100%。此时餐厅已经”全速运转“,这是的并发用户数叫做 最佳并发数 , 所谓”最佳“是指资源已经充分利用,并且每个请求没有额外的等待。
如果某些资源不足,就会发生该资源的利用率已经达到100%,但是其他资源仍有空闲的情况。此时该项资源成为 性能瓶颈 。为避免性能瓶颈,最理想的情况是使得所有资源的利用率同时达到100%,此时各种资源的比例叫做 最佳资源配比 。 QQ餐厅玩家很重要的一项任务就是在餐厅的不断扩建过程中,始终维持各资源的最佳配比。
当客人的数量超过”最佳并发数“时,就会产生额外的等待。也就是说, 等待时间 会随着并发用户数的增加而增长。而从客人的角度来说,等待时间+供餐所需的固有时间(服务员点菜、传菜、结账和厨师做菜等需要的,不可减少的时间)= 响应时间 ,所以等待时间的延长会导致响应时间的延长。而客人的耐心是有限的,如果响应时间过长,客人就会愤然离去,这叫做 响应超时 。
由于响应超时会导致客人的离去,我们应该区分满意离开的客人和因为超时而离开的客人。我们把餐厅在单位时间接待的客人叫做 吞吐量 ,并发用户数-吞吐量=超时的请求。不发生超时情况下的最大并发用户数成为 最大并发数 。 此时系统的吞吐量达到最大。
2 系统性能指标
在QQ餐厅中,涉及到了很多系统性能指标,让我们来回顾一下:
- 系统,应用,服务
- 资源: CPU、内存、磁盘IO等
- 负载,并发用户数
- 资源利用率、性能瓶颈、资源闲置
- 最佳并发数,最佳资源配比
- 等待时间、响应时间与响应超时
- 吞吐量、最大并发数
当然,由于QQ餐厅的模型比较简单,有一些性能指标没有体现出来:
- 用户响应时间和系统响应时间
前面的响应时间是从餐厅(系统)角度考虑的,如果从客人(用户)角度考虑,可能还需要加上从家到餐厅以及从餐厅返回到家的时间。
- 吞吐量的计量
前面把餐厅在单位时间接待的客人数量作为吞吐量,这是因为QQ餐厅进行了简化,假设每位顾客只点一种套餐(一道菜+一份饮料)并且只点一次。更复杂 的情况是根据粒度的不同,分别用每秒完成菜品的数量(流量)、完成点餐的数量(请求)、用餐次数(事务)作为吞吐量的计量,根据需要选择一个或者多个指 标。
3 小结
综上所述,QQ餐厅是一个系统,玩QQ餐厅就是考虑如何优化系统的性能。 而需要分析系统的哪些性能指标、如何分析决定能否对系统性能进行有效的优化。 这些内容可以继续围观《QQ餐厅与系统性能模型(续):如何评价系统的性能》,