论坛首页 综合技术论坛

多核在web环境下,并不需要并行计算

浏览 5902 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-23  
众所周知,所谓并行计算是指一项任务分成多个段来执行,最后合成一个整体。
这在处理密集型单任务的情况下,比如压缩某一个大文件,这种情况下,如果使用并行计算的话,会极大提高处理的速度的。或者在处理图像等技术方面。

那么对于做为WEB服务器的多核计算机来说,因为其处理的本来就是多个任务,CPU中的多核也都各司其职,这样的情况下,再把其中的某个任务分解到多核上去计算,这就凭空增加了许多切换、等待的工作。还不如一个核管理一个任务连接这样轻量。


所以用在web上的多核服务器,在没有极特殊的需求的情况下,不用考虑并行计算的问题,这是目前的我的一个观点,希望能和大家一起探讨。
   发表时间:2009-04-23   最后修改:2009-04-23
你理解似乎有点问题

你怎么知道2个并行的http 的请求到http server,会被并行到2个核处理呢,这个要看
这个http server 实现本身是否对多核情况做了优化
0 请登录后投票
   发表时间:2009-04-23  
多核和高并发服务器根本是两回事……

并发瓶颈不在 cpu,在 IO。
0 请登录后投票
   发表时间:2009-04-23  
bachmozart 写道
你理解似乎有点问题

你怎么知道2个并行的http 的请求到http server,会被并行到2个核处理呢,这个要看
这个http server 实现本身是否对多核情况做了优化


我觉得这个问题应该是操作系统来协调。
作为应用程序这块,不用去管这两个线程被分配到哪个cpu上去了。
在并发量大的情况下,也很可能这两个http请求是使用同一个核来处理的,但其他的请求就被分配到别的核上去了,从总体上看,CPU的工作还是满负荷的。

假设一个http请求当作一个计算任务的话,如果一个WebServer只有这一个访问请求,并且计算量很大的情况下,我们应该考虑并行计算的问题;如果一个WebServer有大量的请求,并且计算量也不是很大的情况下,我们应该让操作系统去平衡这种工作量。

因为WebServer 肯定都是在并发的情况下使用的,所以并行方面的计算就不用太考虑了
0 请登录后投票
   发表时间:2009-04-23  
night_stalker 写道
多核和高并发服务器根本是两回事……

并发瓶颈不在 cpu,在 IO。


其实我们想用并行来计算,主要目的就是充分利用各核心的资源,使之不会被浪费。
对于单机环境来说,可能好多任务就要考虑程序的并行设计了。但对于web应用,CPU总是处于应答状态,每个核心都在忙“自己的事”,这个时候如果用并行算法来处理每个任务,将会增加更多的资源调用。

我现在想的就是高并发的多核服务器,是否适合用并行算法来处理任务。但我觉得任何技术都是有其适应环境的,在高并发的web环境中,并行计算并不适合。
0 请登录后投票
   发表时间:2009-04-23  
yangyiqian 写道

我现在想的就是高并发的多核服务器,是否适合用并行算法来处理任务。但我觉得任何技术都是有其适应环境的,在高并发的web环境中,并行计算并不适合。


同意。不过本来 并行计算 和 高并发 就是两个不同的领域……
0 请登录后投票
   发表时间:2009-04-23  
night_stalker 写道
yangyiqian 写道

我现在想的就是高并发的多核服务器,是否适合用并行算法来处理任务。但我觉得任何技术都是有其适应环境的,在高并发的web环境中,并行计算并不适合。


同意。不过本来 并行计算 和 高并发 就是两个不同的领域……


如果这个问题能确定的话,那么在多核时代的web编程也就不用管CPU是几核的了,还是按照原来一样的写法就OK,有变化的地方就是在JVM和操作系统去调控,总之程序代码不用管理那么多硬件的事情。

不知道这种想法是否正确?

(当然JVM肯定要有考虑并行运算的部分,但这部分内容不一定会大量使用到WEB层面)
0 请登录后投票
   发表时间:2009-04-23  
我觉得高并发问题往往在框架层面就解决了,开发者基本不需要管。

如果要写很底层的处理长连接的东西,大概还得注意。
0 请登录后投票
   发表时间:2009-06-14  
大数据搜索可能要用到。
0 请登录后投票
   发表时间:2009-06-14  
yangyiqian 写道
night_stalker 写道
yangyiqian 写道

我现在想的就是高并发的多核服务器,是否适合用并行算法来处理任务。但我觉得任何技术都是有其适应环境的,在高并发的web环境中,并行计算并不适合。


同意。不过本来 并行计算 和 高并发 就是两个不同的领域……


如果这个问题能确定的话,那么在多核时代的web编程也就不用管CPU是几核的了,还是按照原来一样的写法就OK,有变化的地方就是在JVM和操作系统去调控,总之程序代码不用管理那么多硬件的事情。

不知道这种想法是否正确?

(当然JVM肯定要有考虑并行运算的部分,但这部分内容不一定会大量使用到WEB层面)


愿望很美好.但是目前的操作系统虽然可以做到多线程能够启用多核.但是在应付并发的时候,还是设计到task的切换,切换要么有语言提供,如erlang.要不就得自己搞.符合要求的也只有erlang,stackless python这些.erlang相对更完备一些.

但是,知道这些.你才能知道如何去选择.
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics