一· 什么是并行
并行就是同时运行,可以简单的计算并行数 = cpu数 核心数 2。
*2是因为Intel引入了超线程技术,使cpu核心数 :线程数 = 1 : 2。
二· 什么是并发
这里的并发区别于并行,主要解决的问题就是如何让cpu“一心多用”。一个系统不可能只有寥寥几个线程,所以大部分系统采用了并发模式实现多线程。
当我们谈论并发一定要加个时间单位,也就是说单位时间内并发量是多少。
实现并发的技术相当复杂,最简单最容易实现的就是“时间片轮转算法”,即所有线程轮流使用cpu,每个线程占用cpu的时间相当短(10ms),就好像在并行运行一样。
对于一个web程序的并发量来说是很难精确计算的。影响的因素可能会有:程序执行时间,cpu的时间片轮时间,程序占用的内存大小,程序占用的宽带大小,请求的数据库时间等。
这里给出一个极限的并发量算法的例子:
假设一个服务器有2个物理cpu,每个cpu是8核16个线程;那么它的1s极限并发量是:
1000ms 16 2 / (cpu轮转切换时间(10ms)) + 程序执行时间(10ms) = 1600
那么3s就可达到4800个并发。
##三· 什么是吞吐量
1· 网络吞吐量
网络吞吐量是指某个时刻,在网络中的两个节点之间,提供给网络应用的剩余带宽。
即在没有帧丢失的情况下,设备能够接受的最大速率。网络吞吐量可以帮助寻找网络路径中的瓶颈。
吞吐量的大小一般受限于防火墙内网卡以及程序算法。程序算法会是防火墙进行大量运算,从而使通信量大打折扣。
###2· 系统吞吐量
系统吞吐量是指系统在单位时间内所处理的信息量,以每小时或每天处理的进程数来度量。
影响吞吐量的因素有:
- 存储设备的存取速度
- cpu性能
- 系统结构,如并行结构客增大吞吐量