【发布时间】:2017-10-13 07:04:39
【问题描述】:
我的问题的更多细节:
系统平台是linux(mac),线程任务是非阻塞循环的。假设只有一个cpu核心,当有两个线程时,一个线程每次可以占用多长时间的cpu时间。当线程号增加时,分配给每个线程的 cpu 时间如何变化。
|------------------ one cpu time of one thread ---------------------|
|-context switch time -|----------- user code running time----------|
|------------A---------|--------------------B-----------------------|
经验表明,线程数过大时性能会逐渐下降。我认为性能可能受 A/B 值的影响(A 代表上下文切换时间,B 代表用户代码在线程的一个 cpu 时间片中运行的时间)。所以如果我们知道线程数增加时cpu时间片是如何变化的,我们就可以知道我们系统的性能。
我想真正了解cpu时间分配,有人可以推荐一些关于这方面的好读物或书籍。
【问题讨论】:
-
How long cpu time each thread could occupy each time?- 这取决于调度程序策略。调度是一个广泛的主题。 -
Linux 调度程序策略在 x86、arm 等大多数硬件平台上是否不同?还是取决于硬件性能?
标签: multithreading linux-kernel cpu-usage