作者scaaa (aaa)
看板Programming
标题Re: 不相干的程式做multi-thread有帮助吗?
时间Wed Nov 12 14:01:37 2008
※ 引述《CharArray (char[])》之铭言:
: 我最核心的问题是,硬把2个不相干的multi-process转成multi-thread的overhead
: 但在只有一台实体电脑的状况下,上述的情形在multi-process也都存在,
: 甚至更多,那为什麽还算overhead呢?
Context-Switch Overhead
Thread 和 Process 的主要差别在於有没有 "Shared Virtual Memory"
要切换 Thread 只需要把暂存器储存起来, 可以只在User-space (注)
要切换 Process 则要把整个 Virtual Memory 换掉
Overhead 在於...
1. 换Page Table 要跳到 OS Level~ 很花时间了
2. 要把整个 L1 (Virtual) Cache 清掉
3. 运气不好还会把 TLB 清光光
Performance
要"同时"执行多个 Thread 用单核有SMT的CPU就可以
要"同时"执行多个 Process 则要用多核CPU
Linux SMP 可以把 Thread/Process 分给不同核心
不过现在PC都多核心了~ 如果你核心够多的话,
thread/process跑起来, 效率应该不会差太多 (我没测, 这是只是我猜测)
(注) User-space Thread虽然切换的Overhead较小, 但是OS不知道
不会把你配给其它的核心去执行
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.82.178