Programming 板


LINE

※ 引述《StubbornLin (Victor)》之铭言: : 我最近正在考虑写一个Server : 目前有考虑三种架构 : 1.轮询式的架构 : 也就是单一回圈 : 不停的更新所有连线的状态并做出回应 : 2.MultiThread : 每个连线都由一个Thread负责 : 3.混合式 : 混合轮询和MultiThread式,每个Thread负责一定数量的连线 : 目前我只有写过轮询式的,其它两种都没写过 : 考虑到效能,轮询式的在连线数很多时,很明显的一个问题就是 : 当连线数到一定数量时,可能会变得很没效率 : 每个连线如果花1ms,1000个连线就是1秒 : 但是如果以MultiThread来执行,可以充份利用CPU的资源 : 可是这又带来另一个问题,由於我对Thread的成本不太了解,用起来还是会怕怕的 : * 其中一个问题就是,我不了解开一个Thread到底需要多少成本? : 接着,我想到如果1000个连线就要开1000个Thread : 而Thread的成本如果让人难以接受的话,那可能就得考虑第三种 : 混合式的,每个Thread负责一定数量的连线 : 但是又带来另一个问题就是设计上会变得有点复杂 : ---------------------------------------------------------------- : 除此之外还有另一个我不了解的地方,就是 : * 多核心的CPU到底对效能上的改进有多少帮助? : 最近多核心的CPU在市面上似乎成为主流,但是我一直很好奇 : * 就运作上,到底能将工作分配给不同核心做到什麽地步? : 以上,是我的问题 我用 Windows 的观点来回答你,第一个方式会在连线变多的时候,效率大幅度下降, 第二个方式会因为 context switch 导致 cpu 都在处理 thread 与 thread 之间的 关系而大幅度飙涨,第三个方式,是你提出的三个方式之中最有效率的。 第三个方式大概等於 Windows 中使用 WSAEventSelect 的情况, 因为 Windows 也限制一个 WSAWaitForMultipleEvents 最多等待 WSA_MAXIMUM_WAIT_EVENTS 个 event handle(也就是 64 个), 所以组合起来的情况 就是你提的第三个方式。 此种方式大致上运作良好,但是也是会在大量连线的情况下,因为 context switch 而导致效能直线下降。 而最好的方式是什麽? 目前我所知道最好的方式就是非同步IO。 在 Windows 底下就是使用 I/O completion port,也就是 overlapped I/O 更进一阶 Windows 将在 kernel 使用 thread pool 来帮你处理 I/O,并且有效率的管理 thread pool 的 thread 数量,让你在多 cpu 的时候可以充分利用到 cpu。 即使你在大量的连线情况下,也不会用到太多的 thread。 不过,你就要开始担心 locked pages limit 跟 non-paged pool limit,但这是另外 一个故事了。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.117.50







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP