计算机是个复杂的系统。在这里,我们简单粗暴地将计算机划分为两部分:中央处理单元CPU,和CPU的外围子系统(内存、磁盘、网络等)。
在计算机工作过程中,如果CPU和外围子系统没有同时在工作,那么,就有两种可能:要么是CPU在等待外围子系统,要么是外围子系统在等待CPU。
从上文的表格中,我们看可以看到,CPU的速度是最快的,而外围子系统则不同程度地比CPU慢。由于CPU速度极快,外围子系统相对较慢,在许多情况下,CPU是空闲的,处于等待外围请求的状态。但是,有些时候,CPU非常忙碌,以至于不能及时处理来自外围子系统的请求。这时,就反过来了,是外围子系统在等待CPU。
计算机是用来执行程序的。计算机程序的类型多种多样。对于程序来说,CPU、内存、磁盘、网络等都是供其使用的资源。不同的程序,通常都需要使用各种资源,但是重点使用的资源则有所不同。基于这一特点,可以把计算机程序划分为以下类型。
CPU密集型:程序的执行时间,主要取决于CPU的处理能力;CPU的能力越强,程序就执行得越快。通俗的说,就是那些非常消耗CPU的程序。
内存密集型:程序的执行时间,主要取决于内存的容量;内存容量越大,程序就执行得越快。通俗的说,就是那些非常消耗内存的程序。
I/O密集型:程序的执行时间,主要取决于访问和读写I/O(Input/Output)的效率。I/O访问越快,读写越快,程序就执行得越快。通俗的说,就是那些需要频繁进行I/O操作的程序。
mayan-treasures.com |
程序的性能,符合“木桶原理”。所谓程序的性能短板,即瓶颈,指的是程序中存在某个模块,其运行速度赶不上其余模块的脚步,从而拖累整个程序的性能。
程序的性能瓶颈可能有许多类型,常见的瓶颈有:
CPU瓶颈:当CPU非常繁忙,以至于它不能够及时地响应外围请求时,就出现了CPU瓶颈。此时,CPU的使用率非常高(超过80%),并且待处理的队列很长。
内存瓶颈: 系统没有足够大,或者足够快的内存。在这种情况下,内存为CPU提供服务的速度下降,从而影响整体的性能。当系统没有足够内存的时候,计算机会将存储转移到慢几个数量级的硬盘上。由于大部分时间CPU可能处于等待内存的状态,因此内存成为瓶颈时CPU的使用率可能处于较低的水平。
网络瓶颈:当通信的两个设备之间的带宽不高,或者某一端处理网络访问请求的能力不行时,存在网络瓶颈。
磁盘瓶颈:在计算机内部,硬盘一般是很慢的器件。即使最快的硬盘,也存在物理上的速度限制。如果程序需要高频地访问硬盘,那么磁盘将可能成为性能瓶颈。
程序瓶颈:有时候,系统的瓶颈是来源于程序本身的。也就是说,不是系统的资源不够,而是程序没有高效地利用这些资源。比如,现代计算机通常是多核的,而有些程序可能只利用了其中一个核;又比如,程序没有释放未使用的内存,那么随着程序的长时间运行,再大空间的内存也会被消耗殆尽(即所谓的内存泄漏)。
cabannerstands.com |
共同学习,写下你的评论
评论加载中...
作者其他优质文章