Google ghOSt 调度器分析(3)

调度干预过程

流程示例

以创建 edf agent 为例介绍一下总体流程

在这里插入图片描述

  • 由于代理需要干预内核调度所以首先需要创建一个跟内核交互的接口,这个接口就是 enclave ——代理通过向 /sys/fs/ghost/ctl 写入 “create <abi_version>” 字符串来创建一个新的 enclave
  • 我们可以为 enclave 指定管理范围,即哪些 CPU 可以被当前的 enclave 管理,这也决定了被该 enclave 管理的 ghost 进程能只能在这些 CPUs 之间做负载均衡。代理通过向 /sys/fs/ghost/enclave_/cpumask 写入需要管理的 CPUs 的掩码来实现设定。
  • 为了加快运行速度,代理会在内核中创建消息通道(通过使用 ioctl()操作 /sys/fs/ghost/enclave_/ctl 文件的方式来创建消息通风道);并采用 mmap() 的方式将其映射到用户空间,这样就不需要每次都采用读的方式来获取内核的消息。
  • ghost 调度中的 agent 是一个特殊的 ghost 任务,它负责管理每个 CPUghost 运行队列的执行情况,所以会为每个 CPU<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值