原文地址(英文版):https://github.com/alibaba/clusterdata/blob/v2018/cluster-trace-v2018/trace_2018.md

 

1简介

作为阿里巴巴开放式集群跟踪计划的一部分,cluster-trace-v2018今年将发布新版本的集群跟踪。跟踪从我们的一个生产集群中采样。与2017年的跟踪类似,在群集中的每台计算机上都存在联机服务(也称为长时间运行的应用程序,LRA)和批处理工作负载。在过去的一年中,在线服务和批量工作负载的托管规模大大增加,从而提高了我们的整体资源利用率。

共同定位的工作负载由两个调度程序(用于在线服务的Sigma)和用于批处理工作负载的Fuxi的协调来管理。下图描绘了Sigma和Fuxi coloation的架构。

 

2跟踪的数据文件

2.1关于

Cluster-trace-v2018包括大约4000台机器,每天8天,由6个表组成(每个都是一个文件)。以下是表的简要介绍,每个表的详细信息在2.2 Schema中提供

  • machine_meta.csv:机器的元信息和事件信息。
  • machine_usage.csv:每台机器的资源使用情况。
  • container_meta.csv:容器的元信息和事件信息。
  • container_usage.csv:每个容器的资源使用情况。
  • batch_instance.csv:有关批处理工作负载中实例的信息。
  • batch_task.csv:有关批处理工作负载中实例的信息。请注意,task_name字段中描述了每个作业任务的DAG信息。

下载数据

在非常短的调查(调查链接)之后,下载链接将可用。我们恳请您这样做,以便我们稍后通知您有关重大通知的信息,我们会将信息保密。

您可以按如下方式验证下载。

校验:

(单独的文件)

$sha256sum *
e73e5a9326669aa079ba20048ddd759383cabe1fe3e58620aa75bd034e2450c6  batch_instance.tar.gz
7c4b32361bd1ec2083647a8f52a6854a03bc125ca5c202652316c499fbf978c6  batch_task.tar.gz
febd75e693d1f208a8941395e7faa7e466e50d21c256eff12a815b7e2fa2053f  container_meta.tar.gz
b4bd3b1b82f5407c1b0dd47fe736ff5152c4b016a9c30cb26f988e2d1c5e5031  container_usage.tar.gz
b5b1b786b22cd413a3674b8f2ebfb2f02fac991c95df537f363ef2797c8f6d55  machine_meta.tar.gz
3e6ee87fd204bb85b9e234c5c75a5096580fdabc8f085b224033080090753a7a  machine_usage.tar.gz

(单个文件)

$sha256sum alibaba_clusterdata_v2018.tar.gz
ccb3dc93786507dd42eed29ef62c82220d07f877f269e5fad39f31bf75134ed1  alibaba_clusterdata_v2018.tar.gz

文件大小(注意您需要6个单独的文件或单个alibaba_clusterdata_v2018.tar.gz文件):

$ls -sh1
total 98G
 49G alibaba_clusterdata_v2018.tar.gz
 20G batch_instance.tar.gz
125M batch_task.tar.gz
2.4M container_meta.tar.gz
 28G container_usage.tar.gz
 92K machine_meta.tar.gz
1.7G machine_usage.tar.gz

2.2架构

常见字段的一些解释。

  • time_stamp,start_time和end_time:表中的这些字段都是单位“second”,如果是实际时间与采样跟踪的周期开始之间的差值,则为数字。期间的开头是0。
  • 出于保密原因,我们将某些值(例如内存大小和磁盘大小)标准化,并在[0,100]之间重新调整此字段。但是,有一些无效值,它们设置为-1或101。

表的解释。

  • machine_meta.csv
列名类型说明评论
machine_id机器的唯一ID(uid) 
TIME_STAMPINT时间指数0表示时间戳在8天时间跨度之前或之后
disaster_level_1枚举第一级故障域我们有多个级别的故障域,其中两个在此版本的跟踪中提供。对于任何需要容错的应用程序,它们的实例应分布在许多故障域中
disaster_level_2枚举第二级故障域与disaster_level_1类似,这只是另一个级别的故障域
cpu_numINT一台机器的cpu数单位是“核心”,例如4表示机器上有4个核心
mem_sizeINT机器的内存大小规范化为所有机器的最大内存大小
状态枚举给定time_stamp的机器状态机器的状态。见下面的解释
  • machine_usage.csv
列名类型说明评论
machine_id机器的唯一ID(uid) 
TIME_STAMPINT时间戳0表示时间戳在8天时间跨度之前或之后
cpu_util_percentINTcpu利用率用户和系统都包括在[0,100]之间。有一些无效值,它们设置为-1或101
mem_util_percentINT内存利用率[0,100]。有一些无效值,它们设置为-1或101
mem_gpsINT内存带宽使用率使用所有机器标准化为最大内存带宽
mpkiINT每千条指令缓存未命中 
net_inINT传入网络包的数量标准化为此列的最大值
net_outINT传出网络包的数量标准化为此列的最大值
disk_usage_percentINT磁盘空间利用率[0,100]。有一些无效值,它们设置为-1或101
disk_io_percentINT磁盘io利用率百分比[0,100]。有一些无效值,它们设置为-1或101
  • container_meta.csv
列名类型说明评论
CONTAINER_ID容器的唯一ID(uid) 
machine_id容器主机的机器uid 
deploy_unit部署容器组属于同一部署单元的容器提供一种服务,通常,它们应分布在故障域中
TIME_STAMPINT时间戳0表示时间戳在8天时间跨度之前或之后
cpu_requestINT计划的cpushare请求100表示​​1核心
cpu_limitINT计划的cpushare请求100表示​​1核心
mem_sizeINT计划的内存大小规范化为所有机器的最大内存大小
状态枚举给定time_stamp下容器的状态给定时间戳的容器状态,有关详细信息,请参阅状态机
  • container_usage.csv
列名类型说明评论
CONTAINER_ID容器的唯一ID(uid) 
machine_id容器运行的机器uid 
TIME_STAMPINT时间戳0表示时间戳在8天时间跨度之前或之后
cpu_util_percentINTcpu利用率[0,100]。有一些无效值,它们设置为-1或101
mpkiINT每千条指令缓存未命中 
CPIINT给定time_stamp处的容器的cpi 
mem_util_percentINT内存利用率[0,100]。有一些无效值,它们设置为-1或101
mem_gpsINT内存带宽使用率使用所有机器标准化为最大内存带宽
disk_usage_percentINT磁盘空间利用率[0,100]。有一些无效值,它们设置为-1或101
disk_io_percentINT磁盘io利用率百分比[0,100]。有一些无效值,它们设置为-1或101
net_inINT传入网络包的数量规范化为所有机器的最大net_in
net_outINT传出网络包的数量规范化为所有机器的最大net_out
  • batch_instance.csv
列名类型说明评论
inst_name批处理实例的唯一ID(uid)实例名称在(作业,任务)对中是唯一的
任务名称实例所属的任务名称任务名称在工作中是唯一的; note任务名称表示DAG信息,请参阅批处理工作负载的说明
task_type枚举任务的类型共有12种类型,其中只有一些具有DAG信息
JOB_NAME实例所属任务的job_name工作由许多任务组成。请参阅job-task-instance的说明
状态枚举实例的状态实例的状态
开始时间INT实例的开始时间0表示时间戳在8天时间跨度之前或之后
时间结束INT实例的结束时间0表示时间戳在8天时间跨度之前或之后
machine_id实例运行的计算机ID 
seq_noINTseq没有实例 
total_seq_noINT一个实例的总seq否 
cpu_avgINT实例的cpu的平均cpu利用率100表示​​1核心
cpu_maxINT一个实例的cpu的最大cpu利用率100表示​​1核心
mem_avgINT实例的cpu的平均内存利用率规范化为所有机器的最大内存大小
mem_maxINT实例的cpu的最大内存利用率规范化为所有机器的最大内存大小
  • batch_task.csv
列名类型说明评论
任务名称实例所属的任务名称注意任务名称表示DAG信息,请参阅批处理工作负载的说明
inst_numINT任务具有的实例数 
task_type枚举任务的类型 
JOB_NAME任务的job_name 
状态枚举实例的状态任务的状态
开始时间INT实例的开始时间0表示时间戳在8天时间跨度之前或之后
时间结束INT实例的结束时间0表示时间戳在8天时间跨度之前或之后
plan_cpuINTcpu为每个任务实例请求100表示​​1核心
plan_memINT为每个任务实例请求的规范化内存规范化为所有机器的最大内存大小

2.3 DAG of batch worloads

在此版本的群集数据中,我们包含许多类型的批量wokrload。他们中的大多数是DAG,而其中一些不是。对于那些不是DAG的任务,我们使用随机字符命名它们,例如task_Nzg3ODAwNDgzMTAwNTc2NTQ2Mw==task_Nzg3ODAwNDgzMTAwODc2NTQ3MQ==。这些任务可以视为独立任务。在本节的其余部分,我们将解释如何从任务名称中推断出作业的DAG。

可以使用“作业 - 任务 - 实例”模型来描述完整的批处理计算作业。我们将描述每个术语的含义以及如何在跟踪中表达DAG信息。

作业通常由若干任务组成,其依赖性由DAG(有向无环图)表示。每个任务都有许多实例,并且只有当任务的所有实例都完成后才能将任务视为“已完成”,即如果任务-2依赖于任务-1,则任务2的任何实例都无法启动在任务-1的所有实例完成之前。作业中的任务DAG可以从task_name该作业的所有任务的字段中推断出来,并通过以下示例进行说明。

Job-A的DAG如下图所示。Job-A由5个具有一些依赖性的任务组成。5个任务的DAG用它们表示task_name。对于每项任务:

  • task1task_nameM1:意味着task1是一个独立的任务,可以在不等待任何其他任务开始。同样的休息
  • M2_1:意味着task2取决于完成task1
  • M3_1:意味着task3取决于完成task1
  • R4_2:意味着task4取决于完成task2
  • M5_3_4:意味着task5依赖于两个task3task4,也就是说,task5既可以的所有实例之前不会启动task3task4完成。

请注意,对于DAG信息,只有task_name中的数字值很重要,而第一个字符(例如MR在示例中)与依赖关系无关。

每个任务的实例数用另一个字段表示instance_num

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐