9. Lottery Scheduling

2023-11-23 01:01
文章标签 scheduling lottery

本文主要是介绍9. Lottery Scheduling,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Lottery Scheduling

0. Basic Concept

A : 75 tickets (0~74)
B:25 tickets (75~99)

在这里插入图片描述
A1 + A2:1000 tickets
B1:10 tickets
注意:要区分一个进程和一个线程的tickets。
如下所示,A和B分别有100tickets,A中有两个需要处理的任务A1和A2,总共有1000tickets,每个任务各分配500tickets,相当于CPU给A分配的100tickets的50tickets。其实就是CPU给一个进程分配了100tickets,该进程给里面两个线程分配了1000tickets。
在这里插入图片描述

1. Stride Scheduling

A: 100 tickets
B: 50 tickets
C: 250 tickets
用10000除以每个job的tickets,得到了对应的stride_value。
A: stride_value = 10000 / 100 = 100
B: stride_value = 10000 / 50 = 200
C: stride_value = 10000 / 250 = 40
刚开始每个job的stride_value都是0,所以依次运行A、B、C。
每次运行后都会增加对应job的stride_value。
当所有job都运行一次后再判断stride_value的值的大小,选取最小的值对应的job运行。
在这里插入图片描述

2. The Linux Completely Fair Scheduler (CFS)

A simple counting-based technique: virtual runtime
在这里插入图片描述
time_slice = sched_latency / n

sched_latency是系统给出的,n 代表job数量,上图中sched_latency = 48ms,n = 4
故每个未完成的job的time_slice = 12 ms
当job C、D完成后,job A、B的 time_slice = sched_latency / n = 48ms / 2 = 24ms
但是有个问题就是如果n很大,那每个job分配的time_slice不就很小,这样每个job运行的不得劲,故引入了min_granularity保证每个job有最小的time_slice。

在这里插入图片描述
CFS也做了另外一个改善就是存储结构从链表变成了红黑树
链表插入一个元素时间复杂度为O(n),而红黑树只需要O(log)。

Homework (Simulation)

This program, lottery.py, allows you to see how a lottery scheduler
works. See the README for details.
用的学校机房的电脑~

Question & Answer

在这里插入图片描述

1. Compute the solutions for simulations with 3 jobs and random seeds of 1, 2, and 3.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. Now run with two specific jobs: each of length 10, but one (job 0) with just 1 ticket and the other (job 1) with 100 (e.g., -l 10:1,10:100). What happens when the number of tickets is so imbalanced? Will job 0 ever run before job 1 completes? How often? In general, what does such a ticket imbalance do to the behavior of lottery scheduling?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. When running with two jobs of length 100 and equal ticket allocations of 100 (-l 100:100,100:100), how unfair is the scheduler? Run with some different random seeds to determine the (probabilistic) answer; let unfairness be determined by how much earlier one job finishes than the other.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我觉得不管seed为多少,两个job完成时间都不会差距很大。但是我也只测验了一部分,样本太小,希望大家能自己多测验…

4. How does your answer to the previous question change as the quantum size (-q) gets larger?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出来 the length of time slice (- q)对job完成时间的影响非常大。

5. Can you make a version of the graph that is found in the chapter? What else would be worth exploring? How would the graph look with a stride scheduler?

to be continue…

这篇关于9. Lottery Scheduling的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414202

相关文章

【数学】 HDU 1099 Lottery

HDU 1099 Lottery 题意没懂, 看了discuss,有人说的,才懂了。。。 #include <stdio.h>#include <iostream>#include <string>#include <cstring>using namespace std;__int64 gcd(__int64 a, __int64 b){if(b == 0) return

SQL Server 报错Error clearing scheduling data: 数据库“XXX”的事务日志已满,原因为“ACTIV

DBCC OPENTRAN('数据库'); 查看DBCC OPENTRAN的输出,看到在数据库xxx`中存在活跃事务,其SPID(服务器进程ID)是那个端口号,且开始时间为多少时间。这通常意味着有一个长时间运行的事务阻碍了日志的截断,从而导致事务日志满的问题。 要解决此问题,你需要找到并处理这个活跃事务。以下是可能的步骤: 调查SPID 端口号对应的会话: 查看这个会话正在执行什么操作,

uva 607 - Scheduling Lectures(贪心+记忆化搜索)

题目链接: 607 - Scheduling Lectures 题目大意:给出课题数n,以及每堂课的时间l,以及常数c,然后是n个课题所需要的时间。 问题1:最少需要几节课时可以讲所有的课题讲完,并且课题的顺序不能调换,一个课题不能分在两节课讲。 问题2:在用的课时最少的情况下,如何让同学们的不满意度最低,不满意度的计算是根据课时的剩余时间t计算的, 解题思路:问题1可以

uva 690 - Pipeline Scheduling(dfs+剪枝)

题目链接:uva 690 - Pipeline Scheduling 题目大意:有10个任务,5个管道,每个任务需要占用不同时间的管道,给出任务所占用管道的时间,求最短需要多少时间。 解题思路:dfs+剪枝,剪枝1,将所有可以的相对位置记录。剪枝2,当当前开销加上剩余任务的最有情况仍大于ans。 #include <stdio.h>#include <string.

五种最新算法求解柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),提供MATLAB代码

一、WSA求解FJSP FJSP:波搜索算法(Wave Search Algorithm, WSA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码-CSDN博客 二、SBOA求解FJSP FJSP:蛇鹫优化算法(Secretary bird optimization algorithm,SBOA)求解柔性作业车间调度问题(FJSP),提供MATLAB代

Restful接口开发(5):Scheduling定时任务

一、实现功能 通过spring的@Scheduling,实现定时执行指定任务。 二、基本参数 1.cron 值为字符串 调用实例: 2.zone设置时区 3.fixedDelay(单位毫秒),每次方法执行完毕后,休息固定时间后再次启动 4.fixedRate(单位毫秒)按照固定频率启动执行 5.initialDelay单位毫秒,和上面三个参数搭配使用,首次执行延时 备注:2-5的

【攻防世界】lottery

弱比较+代码审计 本题已提供源码,如果没提供,输入/robots.txt,发现/.git  function buy($req){require_registered();require_min_money(2);$money = $_SESSION['money'];//接受用户原有money$numbers = $req['numbers'];//接受输入的数字$win_numbers =

Java:定时任务无法正常执行(scheduling + ShedLock)

目录 一、场景二、代码片段三、排查四、原因五、解决 一、场景 1、使用定时任务(scheduling) + 分布式锁(ShedLock)定期执行一段代码 2、configureTasks()对于任务执行周期的更新是正常的 3、但任务方法无法被执行 二、代码片段 三、排查 1、确认Trigger没有问题 2、查看redis,看是不是该任

UVALive 3683/UVa 1380 A Scheduling Problem(树形DP)

题意: 有n(n<=200) 个恰好需要一天完成的任务,要求用最少的时间完成所有任务。任务可以并行完成,但必须满足一些约束,约束分为有向约束和无向约束两种,其中A->B表示A必须在B之前完成,A-B表示A和B不能在同一天晚上。输入保证约束图是将一颗树的一些边定向之后得到的。 分析: 参考紫书P297-298,写的很详细。算是一道比较复杂的树形dp了。 LRJ代码: #include<bits

基于遗传算法的柔性车间调度问题的求解(Flexible Job-shop scheduling problem based on genetic algorithm)

1、前言 距离上次研究传统车间调度问题(Job-shop scheduling problem,JSP ),大约有一个月左右了,这期间研究了一下柔性作业车间调度(Flexible Job-shop scheduling problem,FJSP),并利用MATLAB实现了基于遗传算法的FJSP问题求解。在此与大家分享一下,有问题欢迎评论留言,共同交流学习,完整代码见基于遗传算法的FJSP问题求解