多核时代,很重要的一点就是要将多个CPU核同时运转起来,提高CPU的利用率,说得专业一点就是要提高多核CPU的加速比系数。
但 是并不是任何时候都可以同时将多个核运转起来,比如一些不能并行化执行的代码,特别是使用了锁的代码,它的执行是串行化的,无法同时利用多个核,还有负载 平衡问题,多个任务无法划分得很均匀,导致实际情况中有些任务先运行完,有些任务后运行完,先运行完的CPU核就处于空闲状态。
是 不是任何时候都需要将多个核利用到***呢?答案是否定的,比如一个服务器软件,如果只有一个客户端连接过来,那么只要用一个核来处理这个请求已经绰绰有余 了,何必非要同时将多个核同时运行起来呢? 再比如在客户端软件中,客户做了一个操作后,机器只是进行一个时间非常短的运算就结果返回给用户,然后机器处 于空闲状态直到用户的下一次操作为止,在这种情况下,由于机器运算量很小,一个核进行运算完全能够满足用户所需的性能需求,就没有必要同时利用多个核进行 运算,因为很小的计算量情况下,多个核同时运行效率可能还不如一个核。
既 然有那么多情况下不需要多个核同时进行运算,那么买多核的机器干什么? 这不由得将CPU和内存比较起来,比如装了一个2G内存的机器,其实很多情况下是不可能将2G的内存都用完的,但是当运行一些大的应用,或者玩一些大型游 戏的情况下,内存就基本上都利用上了,其实以后用多核CPU可能就象用内存一样,并不是任何时候都需要将所有的CPU核都用上的,只有计算量很大的情况下 才需要完全利用多个CPU核来进行计算,也就是说全部的CPU核主要是为计算达到一定规模时才全部使用的,当然这个计算规模随CPU核数的不同而不同。
当 然使用CPU和使用内存并不是完全相同的,因为现在软件规模越来越大,大多数计算的规模是可以达到为多核而使用的,因为软件规模会随着CPU核数的增加而 同步增长,大部分情况下多个CPU核都是可以充分利用上的,而内存则不一样,不论是客户端机还是服务器,可能大部分时候内存利用率并不是很高,只有少数高 峰时候才能将内存全部用上。
原文链接:http://blog.csdn.net/drzhouweiming/article/details/1698721