Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux调度程序历史记录_Linux_Linux Kernel_Scheduler - Fatal编程技术网

Linux调度程序历史记录

Linux调度程序历史记录,linux,linux-kernel,scheduler,Linux,Linux Kernel,Scheduler,我有一个在Linux上运行的进程,它创建了很多pthread(每个pthread都有自己的用途)。假设由于某种原因,其中一个线程崩溃。有时,崩溃可能是由其他线程引起的,最好在崩溃之前知道哪些线程正在运行 所以问题是: 有没有办法询问Linux调度器最后调度了哪些线程 非常感谢您的帮助。 谢谢。您可能知道Linux“top”命令,它可以显示进程打开的所有线程: top-H-p“流程的pid” 我可以帮助确定有多少线程正在运行,这些线程已停止或崩溃。您可能知道Linux“top”命令,它可以显示进程

我有一个在Linux上运行的进程,它创建了很多pthread(每个pthread都有自己的用途)。假设由于某种原因,其中一个线程崩溃。有时,崩溃可能是由其他线程引起的,最好在崩溃之前知道哪些线程正在运行

所以问题是: 有没有办法询问Linux调度器最后调度了哪些线程

非常感谢您的帮助。
谢谢。

您可能知道Linux“top”命令,它可以显示进程打开的所有线程:

top-H-p“流程的pid”


我可以帮助确定有多少线程正在运行,这些线程已停止或崩溃。

您可能知道Linux“top”命令,它可以显示进程打开的所有线程:

top-H-p“流程的pid”


我可以帮助确定有多少线程正在运行,这些线程被停止或崩溃。

您必须在内核代码中进行更改,以在每个上下文切换处收集调度数据,并在内存中的某个位置继续写入,它有点类似于PNE内核中可用的飞行记录器功能。

您必须在内核代码中进行更改,以在每个上下文切换处收集调度数据并在内存中的某个位置继续写入,它有点类似于PNE内核中可用的飞行记录器功能。

为什么这对您很重要?我相信,在调度周期很短的快速机器上(内核中配置了一些
HZ
,这里是抢占式的),2个运行线程(10个可运行线程中的2个)和5个运行线程(10个可运行线程中的5个)在较慢的机器上,两者之间的差别是不合理的。调度器可以随意运行任务,任务调度可以在任何机器指令下进行!内核试图给你一种错觉,即所有可运行线程都在同时减慢运行速度。为什么这对你很重要?我相信,在调度周期很短的快速机器上(内核中配置了一些
HZ
,这里是抢占式的),2个运行线程(10个可运行线程中的2个)和5个运行线程(10个可运行线程中的5个)在较慢的机器上,两者之间的差别是不合理的。调度器可以随意运行任务,任务调度可以在任何机器指令下进行!内核试图给你一种错觉,即所有可运行线程都在同时减慢运行速度。我担心这可能会显著降低任务调度程序的运行速度。这会带来一些开销。所有的PNE内核都很好地使用了这个特性,但并不是每个人都有PNE内核,因为它更多的是专有内核,而不是开源内核。你们可以引用开放源码中类似的kdump的例子,它不再是一个专有的内核。NVRAM用于此任务,可以做一些小的更改来适应此任务。恐怕这会大大降低任务调度程序的速度。这会带来一些开销。所有的PNE内核都很好地使用了这个特性,但并不是每个人都有PNE内核,因为它更多的是专有内核,而不是开源内核。你们可以引用开放源码中类似的kdump的例子,它不再是一个专有的内核。NVRAM用于此蛹,可以进行小的更改以适应此蛹