如何产生数据集

原文:Generating Realistic Datasets for Deduplication Analysis.
本文的作者首先在FAST12做了poster,然后全文发表在ATC12。本文针对目前数据去重领域缺少公认数据集的情况,提出了一种仿真真实数据集的方法,并开源了代码。

传统的存储研究使用的trace都是无真实数据的,比如disksim接受的trace只有IO本身的特点,而数据去重依赖真实的数据,因此研究者通常使用自己的私有数据集,这使得无法公平比较各种数据去重方法。这个主题的意义还是很大的。

1.框架


想象一下真实的环境,我们的系统总是从一个起点开始(安装操作系统),不断发生演变,本文的重点就是仿真这种演化。整个演化的过程都是在内存中的,一个文件系统镜像在内存中用fstree数据结构表示,一棵fstree包含了文件系统的目录结构,由很多目录和文件对象组成,每个文件对象存储的不是真实数据,而是指纹。下图是仿真过程的示意图。


首先我们需要一个起点,图的最左边是产生初始镜像的过程,有两种方法。第一种方法是扫描真实的文件系统(fs-scan);第二种方法是人工合成,先从真实文件系统获取关键统计信息(fs-profile),统计信息包括content profile和meta profile;根据meta profile,可以使用Impression等工具产生一个空的fstree(不包括文件的指纹),再根据content profile产生指纹(fs-populate);最终得到一颗初始镜像的fstree。

接着进入了演化阶段,演化阶段最重要的是profile,profile从真实文件系统获取了系统演化的规律,然后fstree按照这个profile定义的规则进行演化,不断产生新一代的fstree。

当需要生成数据集时,对fstree执行fs-create操作,镜像会被写入磁盘,每个文件都会有合成的数据,数据的真实性并不重要,需要保证的是相同的指纹产生相同的数据,不同的指纹产生不同的数据。

2.profile


fstree演化最重要的是profile,这个profile定义了文件系统演变的特征。作者的profile是通过分析六个真实数据集得到的。作者公开了收集profile的方法,研究者可以收集自己的profile。

3.如何演化


论文采用了马尔科夫和多维分布模型仿真文件系统的演化,其中马尔科夫模型用于描述文件状态的分布,多维分布模型通过多个维度的随机变量(包括文件状态)描述文件系统的演化。

3.1.马尔科夫模型


一个文件的操作可以分为三类:新建、删除和修改。因此可以将文件分为四类:F_new,F_del,F_mod和F_unmod。在演化的过程中,文件就是在这四种状态之间变化,可以用下图描述:


里面比较奇怪的是Deleted到New的跳跃,这种情况表明用户删除了文件后又恢复了这个文件。各种变迁的概率是从真实数据集统计出来的:大部分文件的状态会保持unmodified;一个modified文件,很可能会继续被修改,因此P(MM)有50%左右。马尔科夫模型是多维分布模型的其中一维。

3.2多维分布模型


文件系统的演化是用多维分布模型描述的。三种文件操作分别有自己的多维分布:M_new(p_1,p_2,..., p_n),M_del(p_1, p_2, ..., p_n), M_mod(p_1, p_2, ..., p_n)。参数(p_1,..., p_n)代表了被操作文件的特征,每一个特征都是一个随机变量,其分布是由统计真实文件系统得到的。三种操作的分布都有以下参数:
  • depth,目录树的深度;
  • ext,扩展名;
  • size,块的数量;
  • uniq,在前一个镜像未出现过的块的数量;
  • dup,在前一个镜像出现过一次的块的数量;
  • dup2,在前一个镜像出现过两次的块的数量;
新建文件的分布是M_new(depth, ext, size, uniq, dup, dup2)。比如M_new(2, .c, 7, 3, 1, 1)=4,那么就在目录深度为2的位置创建4个.c文件,每个文件有7个块,其中唯一块为3个,1个块在前镜像有一个副本,1个块在前镜像有两个副本,剩下的两个块的重复度由整个镜像的重复度分布决定。

删除文件的分布M_del(depth, ext, size, uniq, dup, dup2, state)多一个参数,state指的就是马尔科夫模型的四种状态,删除操作会找到匹配所有参数的文件。比如M_del(2, .c, 7, 3, 1,1, mod)=1,则会选择删除一个状态为modified的文件。

M_mod分布用于选择文件进行修改,它的参数和M_del一样,但是M_mod必须决定如何修改文件,因此每个文件都有一系列的修改描述符,描述了文件修改后的特性:file size,uniq, dup, dup2 和change pattern。其中change pattern定义了修改的位置,可以是B(egin)、E(nd)、M(iddle)。修改描述符的分布也是在分析阶段产生的。

4.开源

代码在 这里开源,其中包括多个工具:
  • dedup,这个就是fs-scan工具,扫描文件系统得到一个hash文件;
  • hash2fstree,这个工具将hash文件转换为fstree;
  • README,文档介绍了如何使用fstree-mutate等工具演化文件系统。
源码包里没有作为例子的profiles,作者说这是因为profiles会泄漏敏感信息。我询问了作者,可能在12月左右给出部分数据的profile。

转载于:https://www.cnblogs.com/opennaive/p/3312768.html

要在MATLAB中生成调制信号数据集,可以使用内置的信号生成函数和调制函数。 首先,我们可以选择生成基本信号波形。例如,使用sawtooth函数生成锯齿波形,square函数生成方波形,sine函数生成正弦波形等。这些函数都可以指定频率、振幅和时间等参数。 然后,我们可以使用调制函数将基本信号波形进行调制。常见的调制函数包括幅度调制(AM)、频率调制(FM)和相位调制(PM)。每种调制方法都有不同的调制函数。例如,ammod函数用于幅度调制,fmmod函数用于频率调制,pmmod函数用于相位调制。这些函数可以设置调制指数、载波频率和调制信号频率等参数。 在生成调制信号数据集时,可以通过改变基本信号波形的参数和调制函数的参数来获得不同的信号样式。例如,通过改变振幅和频率来生成不同频率的AM信号,或者通过改变调制指数和调制信号频率来生成不同幅度的FM或PM信号。 在MATLAB中生成调制信号数据集还可以加入噪声。可以使用内置的随机数生成函数,如randn函数生成高斯白噪声,rand函数生成均匀噪声。然后,将噪声与调制信号相加,即可得到包含噪声的调制信号数据集。 最后,将生成的调制信号数据集保存为MAT文件,以便后续使用或分析。 综上所述,生成调制信号数据集可以通过选择基本信号波形、使用调制函数、加入噪声等步骤完成。MATLAB提供了丰富的信号生成和处理函数,使得生成调制信号数据集变得简单和灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值