USE 方法检查使用率(utilization)、饱和度(saturation),以及所有硬件资源的错误(error)。
通过发现某一成为瓶颈的资源,许多应用程序的性能问题都能用该方法得到解决。
USE 方法也适用于软件资源,取决于应用程序。如果你能找到应用程序的内部组件的功能图,对每种软件资源都做使用率、饱和和错误指标上的考量,看看有什么问题。举一个例子,有一个应用程序用一个工作线程池来处理请求,请求在队列里排队等待被处理。把这个当作资源看待,那么三个指标可以做如下定义。
- 使用率:在一定时间间隔内,忙于处理请求的线程平均数目。例如,50%意味着,平均下来,一半的线程在忙于请求的工作。
- 饱和度:在一定时间间隔内,请求队列的平均长度。这显示出等待工作线程的有多少个请求。
- 错误:出于某种原因,请求被拒绝或失败。
你所要做的就是找到测量这些指标的方法。它们可能已经由应用程序提供在某处,或者可能需要添加这些指标或者用另外的工具做测量,如动态跟踪。
例子
举一个不同的例子,文件描述符。系统会设置一个上限,使得文件描述符变成了有限资源,三个指标如下。
- 使用率:使用中的文件描述符的数量,与上限做一个百分比。
- 饱和度:取决于操作系统的行为,如果线程会为等待文件描述符分配而被阻塞,那么这个指标就是等待文件描述符的被阻塞的线程数目。
- 错误:分配失败,如EFILE,“太多打开文件”。