多少量级才算是⾼并发
我认为⾼并发系统的本质就是充分利⽤硬件资源,提升cpu、io设备的综合利⽤率。
操作系统利⽤中断等分时复⽤机制解决了cpu的利⽤率问题,利⽤dma技术解决了io设备的利⽤率问题。但是并没有解决两者相互配合的问题,那么如何来解决呢?
常见的思路有多进程模型,多线程模型,协程,今天我们来讨论⼀下多线程模型的实现思路。
为了避免重复创建线程,多线程模型⼀般使⽤线程池技术。为了充分利⽤cpu和io设备利⽤率,理想情况是当cpu忙碌的时候,io设备也不空闲。要做到这⼀点,那么必须协调io密集型线程和cpu密集型线程相互配合,设置合理的线程数。
我们知道线程是cpu的最⼩调度单位,从cpu的⾓度上看,当某个线程忙着从io设备拷贝数据时,应该把该线程的时间⽚切掉,调度给其他线程。当该线程完成io操作之后,再把时间⽚切回去。这样就能充分利⽤cpu和io。
那么设置多少个线程⽐较合适呢?
如果应⽤是cpu密集型的,理论上线程数等于cpu核数+1就可以了,多⼀个的原因是当偶尔内存页缺失时,那个线程能够顶上。
如果应⽤是io密集型的(当然纯io密集型是不存在的),理论上线程数等于 cpu核数*(io⽤时/cpu⽤时 + 1)。io⽤时/cpu⽤时 表⽰ ios ⽤时与cpu⽤时的⽐例。
那么回答⼀下多少量级才算是⾼并发呢?我认为能充分利⽤cpu和io设备的综合利⽤率就算是⾼并发。⽐如4核8G机器单机⼀般1000QPS 等。⽐如吞吐量与响应时间达到平衡。

更多推荐

线程,设备,模型,并发