Parallel processing 重线程消耗对ARM(4核A72)与x86(2核i5)的影响
我有一个实时linux桌面应用程序(用C编写),我们正在将其移植到ARM(4核CortexV8-A72 CPU)。在体系结构上,它结合了高优先级显式pthread(其中6个)和两个GCD(libdispatch)工作队列(一个并发,另一个串行) 我关注两个方面:Parallel processing 重线程消耗对ARM(4核A72)与x86(2核i5)的影响,parallel-processing,operating-system,arm,multiprocessing,grand-central-dispatch,Parallel Processing,Operating System,Arm,Multiprocessing,Grand Central Dispatch,我有一个实时linux桌面应用程序(用C编写),我们正在将其移植到ARM(4核CortexV8-A72 CPU)。在体系结构上,它结合了高优先级显式pthread(其中6个)和两个GCD(libdispatch)工作队列(一个并发,另一个串行) 我关注两个方面: 我听说ARM不能像x86那样进行超线程处理,因此我的4核已经开始进行上下文切换,以跟上我的6个pthread(和后台进程)。我应该从中得到什么样的性能惩罚? 我听说这些ARM上下文切换的效率应该低于x86。这是真的吗 有几个pthr
- 我听说ARM不能像x86那样进行超线程处理,因此我的4核已经开始进行上下文切换,以跟上我的6个pthread(和后台进程)。我应该从中得到什么样的性能惩罚?
- 我听说这些ARM上下文切换的效率应该低于x86。这是真的吗
- 有几个pthread是相当罕见的ish事件的高优先级处理程序,这会对前景有很大影响吗?(例如,它们位于
语句上)select
- 我更关心的是GCD在这个应用程序中的影响。我对GCD内部工作原理的理解是,它是一个动态缩放的线程池,与调度程序交互,并将尝试添加更多线程以适应负载。在我看来,在我的场景中,这几乎完全会对性能产生负面影响。(即,在内核已完全消耗的系统中)正确吗李>
硬件上下文开关是硬件上下文开关,您将所有寄存器推送到堆栈并翻转一些位以更改执行状态。所以不,我不认为两者在这方面都“更快”然而,对于单个物理内核,像超线程这样的技术使得操作系统意义上的“上下文切换”(我想你是指在线程之间切换)快得多,因为两个程序的指令已经在同一内核上并行执行 我对GCD一无所知,所以不能对此发表评论 最后,我想说,最好的办法是在两种体系结构上对应用程序进行基准测试。看看你的瓶颈在哪里。是内存访问吗?保留缓存