多少量级才算是高并发

我认为高并发系统的本质就是充分利用硬件资源,提升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等。比如吞吐量与响应时间达到平衡。

你可能感兴趣的:(并发理论)