Questions tagged «scheduler»

10
如何从Python异步运行外部命令?
我需要从Python脚本异步运行Shell命令。我的意思是,我希望我的Python脚本能够在外部命令关闭并继续执行所需操作的同时继续运行。 我读了这篇文章: 在Python中调用外部命令 然后我os.system()去做了一些测试,如果我&在命令末尾使用它,看起来就可以完成这项工作,这样我就不必等待它返回。我想知道的是,这是否是完成此任务的正确方法?我试过了,commands.call()但是对我来说不起作用,因为它会阻塞外部命令。 请告诉我是否os.system()建议这样做,或者我应该尝试其他方法。

2
SLURM`srun` vs`sbatch`及其参数
我试图了解SLURMsrun和sbatch命令之间的区别。我将对一般性的解释感到满意,而不是对以下问题的具体答案感到满意,但是这里有一些具体的混淆点,可以作为起点并给出我所寻找的想法。 根据文档,srun用于提交作业,并且sbatch用于提交作业以供以后执行,但是实际区别对我来说尚不清楚,并且它们的行为似乎相同。例如,我有一个包含2个节点的群集,每个节点具有2个CPU。如果我srun testjob.sh &连续执行5次,它将很好地将第五个作业排队,直到CPU可用为止sbatch testjob.sh。 为了使问题更具体,我认为一个不错的起点是:我可以对某项做些什么而对另一项做不到,为什么? 这两个命令的许多参数都是相同的。似乎最相关的那些是--ntasks,--nodes,--cpus-per-task,--ntasks-per-node。它们之间如何相互关联,以及它们与srunvssbatch有何不同? 一个特别不同的是,srun如果将导致错误testjob.sh没有执行权限,即chmod +x testjob.sh而sbatch会开心地运行它。导致这种情况的“幕后”发生了什么? 该文档还提到srun了sbatch脚本内部常用的内容。这就引出了一个问题:它们之间如何相互作用,以及它们之间的“规范”用例是什么?具体来说,我会独自使用srun吗?

3
上下文切换内部
我想借助这个问题来学习并弥补我的知识空白。 因此,用户正在运行一个线程(内核级),并且现在正在调用yield(我认为是系统调用)。现在,调度程序必须将当前线程的上下文保存在TCB中(该线程存储在内核中的某个位置),并选择另一个线程来运行并加载其上下文并跳转至CS:EIP。为了缩小范围,我正在研究在x86体系结构上运行的Linux。现在,我想详细介绍一下: 因此,首先我们有一个系统调用: 1)的wrapper函数yield会将系统调用参数推入堆栈。推送返回地址,并通过将系统调用号推送到某个寄存器(例如EAX)引发中断。 2)中断将CPU模式从用户更改为内核,并跳转到中断向量表,并从那里跳转到内核中的实际系统调用。 3)我猜想调度程序现在被调用,现在它必须将当前状态保存在TCB中。这是我的困境。因为,调度器将使用内核堆栈,而不是用于执行其操作(这意味着该用户堆栈SS和SP已被改变),它是如何存储的用户的状态,而不会在该过程修改任何寄存器。我在论坛上已经读到有一些用于保存状态的特殊硬件说明,但是调度程序如何访问它们,谁来运行这些说明以及何时运行? 4)现在,调度程序将状态存储到TCB中并加载另一个TCB。 5)当调度程序运行原始线程时,控件返回到包装器函数,该函数清除堆栈并恢复线程。 附带问题:调度程序是否以仅内核线程(即只能运行内核代码的线程)运行?每个内核线程或每个进程是否有单独的内核堆栈?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.