xudc14 发表于 2016-03-28 20:29

线程睡眠后被**运行在哪个CPU上

Hi All,
问2个线程调度的问题

一.
线程A运行在CPU0上调用sleep_on睡眠在一个wait_queue_head_t上,另外一个线程B运行在CPU1上调用wake_up**线程A
请问**后的线程A是运行在之前挂起的CPU0上吗?

二.
线程A运行在CPU0上调用schedule_timeout让出CPU0,另外一个线程B运行在CPU1上调用wake_up_process**线程A
请问**后的线程A也是运行在之前挂起的CPU0上吗?

Thanks

xudc14 发表于 2016-03-28 20:32

**是huan xing,这也是敏感词{:qq27:}

nswcfd 发表于 2016-03-29 12:30

不一定,跟schedule_domain(例如numa)、wake_idle等因素有关系,会在local-cpu(调用wake-up的)和remote-cpu(被wake-up的)之间做选择。

简单的情况下,可以认为优先使用原来的cpu(其实也不绝对)。

archer239915 发表于 2016-04-18 00:43

**时会进行负载迁移的,看函数select_task_rq。
页: [1]
查看完整版本: 线程睡眠后被**运行在哪个CPU上