
【集群】云计算集群调度数据集整理

🎯简介
在云计算集群管理领域,高质量的数据集对于算法研究、性能优化和系统设计至关重要。本文整理了三个具有代表性的数据集:阿里巴巴的集群数据集、谷歌的集群数据集,以及字节跳动最新发布的VM碎片重调度数据集。这些数据集各有特色,为不同场景下的集群调度研究提供了宝贵的数据支持。
🌍背景
随着云计算的快速发展,集群调度系统面临着越来越复杂的挑战:
- 资源利用率优化
- 碎片处理
- 性能优化
- 成本控制
- 在离线混合部署优化
为了应对这些挑战,研究人员需要真实的生产环境数据来验证和优化他们的算法。本文介绍的三个数据集分别来自不同的场景,能够满足不同研究需求。
📊数据集介绍
1. 字节跳动 VM碎片重调度数据集 (EuroSys’25)
数据集概述
这是字节跳动最新发布的数据集,主要用于研究VM碎片重调度优化问题。该数据集支持深度强化学习等现代算法的研究。
适用场景
- VM碎片重调度优化研究
- 深度强化学习算法验证
数据格式
数据集包含多个子集(L
、M
、M_medium
、M_small
、multi
),每个子集都包含训练集、测试集和执行集。数据以JSON格式存储,包含以下主要信息:
- 集群信息(cluster_list)
- 主机信息(host_info)
- VM类型信息(vm_type_info)
- VM实例信息(vm_instance)
- 其他需求(other_requirement)
数据案例
1 | { |
获取方式
- 论文链接:Towards VM Rescheduling Optimization Through Deep Reinforcement Learning
- 数据集:Google Drive
- 代码仓库:GitHub
2. 阿里巴巴集群数据集
数据集概述
该数据集记录了约4000台机器在8天内的运行情况,包含6个主要数据表。
适用场景
- 传统调度算法研究
- 资源利用率分析
- 在线服务和离线作业混合调度
- 集群性能分析
数据表说明
machine_meta.csv
:机器元信息和事件信息machine_usage.csv
:机器资源使用情况container_meta.csv
:容器元信息和事件信息container_usage.csv
:容器资源使用情况batch_instance.csv
:批处理作业实例信息batch_task.csv
:批处理作业任务信息
数据特点
- 时间戳以秒为单位
- 内存和磁盘大小进行了归一化处理([0, 100]范围)
- 支持在线服务和离线作业分析
数据案例
有表格的具体说明位于schema。展示如下:
常见字段的一些解释。
time_stamp
、start_time
和end_time
:表中的这些字段都以 “秒
“为单位,数字是实际时间与跟踪采样周期开始时间之差。采样周期的起始时间为0
。出于保密原因,我们对
内存大小
和磁盘大小
等一些值进行了归一化处理,并在 [0, 100] 之间对这些字段进行了重新缩放。不过,也有一些无效值会被设置为-1 或 101。
machine_meta.csv
字段 | 类型 | 标签 | 注释 |
---|---|---|---|
machine_id | string | 机器唯一标识符 uid | |
time_stamp | bigint | 时间戳,单位为秒 | |
failure_domain_1 | bigint | 容器故障域的第一级 | |
failure_domain_2 | string | 容器故障域的第二级 | |
cpu_num | bigint | 机器上的CPU数量 | |
mem_size | bigint | 归一化后的内存大小,范围[0, 100] | |
status | string | 机器状态 |
- 关于failure_domain_1:我们有多级故障域,在这个版本的日志中提供了两个。对于任何需要容错的应用程序,其实例应该分布在多个故障域中。这是一个枚举值。
machine_usage.csv
字段 | 类型 | 标签 | 注释 |
---|---|---|---|
machine_id | string | 机器唯一标识符 uid | |
time_stamp | double | 时间戳,单位为秒 | |
cpu_util_percent | bigint | CPU使用率,范围[0, 100] | |
mem_util_percent | bigint | 内存使用率,范围[0, 100] | |
mem_gps | double | 归一化后的内存带宽,范围[0, 100] | |
mkpi | bigint | 每千条指令的缓存未命中数 | |
net_in | double | 归一化后的入站网络流量,范围[0, 100] | |
net_out | double | 归一化后的出站网络流量,范围[0, 100] | |
disk_io_percent | double | 磁盘IO使用率,范围[0, 100],异常值为-1或101 |
container_meta.csv
字段 | 类型 | 标签 | 注释 |
---|---|---|---|
container_id | string | 容器唯一标识符 uid | |
machine_id | string | 容器所在主机的唯一标识符 uid | |
time_stamp | bigint | 时间戳,单位为秒 | |
app_du | string | 同一应用组的容器共享相同的app_du值 | |
status | string | 容器状态 | |
cpu_request | bigint | CPU请求量,100表示1核 | |
cpu_limit | bigint | CPU限制量,100表示1核 | |
mem_size | double | 归一化后的内存大小,范围[0, 100] |
- 关于 app_du:属于同一部署单元的容器提供一种服务,通常情况下,它们应分布在不同的故障域中
container_usage.csv
字段 | 类型 | 标签 | 注释 |
---|---|---|---|
container_id | string | 容器唯一标识符 uid | |
machine_id | string | 容器所在主机的唯一标识符 uid | |
time_stamp | double | 时间戳,单位为秒 | |
cpu_util_percent | bigint | CPU使用率,范围[0, 100] | |
mem_util_percent | bigint | 内存使用率,范围[0, 100] | |
cpi | double | 每条指令的周期数 | |
mem_gps | double | 归一化后的内存带宽,范围[0, 100] | |
mpki | bigint | 每千条指令的内存访问未命中数 | |
net_in | double | 归一化后的入站网络流量,范围[0, 100] | |
net_out | double | 归一化后的出站网络流量,范围[0, 100] | |
disk_io_percent | double | 磁盘IO使用率,范围[0, 100],异常值为-1或101 |
batch_task.csv
字段 | 类型 | 标签 | 注释 |
---|---|---|---|
task_name | string | 任务名称,在每个作业job内唯一 | |
instance_num | bigint | 实例数量 | |
job_name | string | 作业名称 | |
task_type | string | 任务类型 | |
status | string | 任务状态 | |
start_time | bigint | 任务开始时间 | |
end_time | bigint | 任务结束时间 | |
plan_cpu | double | 任务所需的CPU数量,100表示1核 | |
plan_mem | double | 归一化后的内存大小,范围[0, 100] |
- Task name 表示 DAG 信息,请参阅批处理工作负载的说明
batch_instance.csv
字段 | 类型 | 标签 | 注释 |
---|---|---|---|
instance_name | string | 实例名称 | |
task_name | string | 实例所属的任务名称 | |
job_name | string | 实例所属的作业名称 | |
task_type | string | 任务类型 | |
status | string | 实例状态 | |
start_time | bigint | 实例开始时间 | |
end_time | bigint | 实例结束时间 | |
machine_id | string | 实例所在机器的唯一标识符 | |
seq_no | bigint | 实例的序列号 | |
total_seq_no | bigint | 实例的总序列号 | |
cpu_avg | double | 实例平均CPU使用率,100表示1核 | |
cpu_max | double | 实例最大CPU使用率,100表示1核 | |
mem_avg | double | 实例平均内存使用率(归一化) | |
mem_max | double | 实例最大内存使用率(归一化,范围[0, 100]) |
- Task name 在 job 中是统一的;注意 Task name 表示 DAG 信息,请参阅批处理工作负载的说明
- 共有 12 种类型,其中只有部分类型有 DAG 信息
获取方式
- GitHub仓库:alibaba/clusterdata
3. 谷歌集群数据集
数据集概述
该数据集提供了2019年5月期间8个不同Borg cells的信息,数据量约2.4TiB(压缩后)。
- 数据集包含多个文件
clusterdata_2011_1
、clusterdata_2019_a
、clusterdata_2019_b
、……、clusterdata_2019_h
- 每个文件中包含多张表
collection_events
、instance_events
、instance_usage
、machine_attributes
、machine_events
。其中collection
和instance
的关系,类似于job
和task
的关系。
适用场景
- MapReduce等分布式框架研究
- 大规模集群调度优化
- 资源分配策略研究
- 作业依赖关系分析
数据特点
- 每5分钟的CPU使用信息直方图
- 资源分配集(alloc sets)信息
- 作业级父信息(job-parent information)
- 支持MapReduce等分布式计算框架分析
- 侧重于资源请求和使用情况,不包含有关终端用户end users、其数据或存储系统和其他服务的访问模式的信息
获取方式
- 通过Google BigQuery访问,获取方式参考博客如下:
- 点击”
+添加数据
“ / “+ Add Data
“ - 点击”
按名称为项目加星标
“/“Star a project by name
“ - 输入名称”
google.com:google-cluster-data
“ - 点击”
加星标
“/“star
“
- 点击”
- 数据集文档:Google cluster-usage traces v3
- 示例分析代码:Kaggle
- 希望这篇博客对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
- 如果你喜欢这篇文章,欢迎动动小手给我一个follow或star。
📝参考文献
- 标题: 【集群】云计算集群调度数据集整理
- 作者: Fre5h1nd
- 创建于 : 2025-06-09 14:07:20
- 更新于 : 2025-06-10 14:43:54
- 链接: https://freshwlnd.github.io/2025/06/09/k8s/scheduler-datasets/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
推荐阅读
评论