首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZFS块大小(记录大小)和主缓存问题

ZFS块大小(记录大小)和主缓存问题
EN

Stack Overflow用户
提问于 2014-06-27 08:39:56
回答 1查看 4.5K关注 0票数 1

在这个网站上:http://www.patpro.net/blog/index.php/2014/03/19/2628-zfs-primarycache-all-versus-metadata/

这个人表示,通过将primarycache转换为all或元数据,他在使用防病毒时获得了截然不同的读取性能。

然而,他也表明,读取带宽也有很大的差异。

我使用primarycache=none和compression=lz4创建了两个全新的数据集,并在每个数据集中复制一个4.8GB文件(2.05x压缩率)。然后,我将primarycache=all设置为第一个,primarycache=metadata设置为第二个。我将第一个文件放在/dev/null中,在另一个终端中运行zpool。最后,我用同样的方式对第二个文件进行猫操作。 对于primarycache=all: 2.44GB的dataset,读取带宽列的总和(几乎)与磁盘上文件的物理大小(du输出)完全相同。对于其他数据集,对于primarycache=metadata,读取带宽列之和为...wait。77.95GB

他接着说,一位匿名用户解释道:

读取一个文件,得到4k (页面大小?)对数据进行处理,然后读取下一个4k,等等。 然而,ZFS不能只读取4k。默认情况下,它读取128 k(记录大小)。由于没有缓存(您已经关闭了它),其余的数据就会被丢弃。 128 K/ 4k = 32 32x2.44GB= 78.08GB

我不太明白匿名用户的解释。我仍然不明白为什么读带宽有这么大的差别。

那么,为什么这个ZFS实验表明,当primarycache是全部时,读取带宽是2.44GB,但是当它只是元数据时,它是77.95GB?调优ZFS的含义是什么?如果这个人可能缩小了他的记录,他会有不同的结果吗?

ZFS的记录大小是可变的,这一说法如何?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-01 17:07:29

博客作者Patrick运行的测试是“猫”4.8GB文件(压缩为2.44GB)到/dev/null,并观察读取该文件所用的时间。

关键是"primarycache=metadata“可能也意味着"cache=off”,因为实际的文件都不会存储在缓存中。当"primarycache=all“时,系统只读取整个文件一次,并将其存储在缓存中(通常是RAM,然后是填充时的L2 SSD缓存)。当"cat“或"clamscan”寻找文件时,他们可以在那里找到它,并且不需要再从磁盘中读取它。

当cat将文件写到/dev/null时,它不只是在一个2.44 GB块中写它,而是一次写它一点点,然后它检查缓存中的下一个位,然后再写更多,等等。

当缓存关闭时,当它被写入/dev/null (或stdout,无论什么地方)时,将需要从磁盘中重读大量的文件--这就是“128 k/4k= 32”的逻辑。

ZFS以128 k块在磁盘上写入文件,但论坛海报发现,至少在这个用户的FreeBSD框中,“翻盖扫描”(和"cat“)处理4k块中的数据。因此,如果没有缓存,每个128 k块就必须服务32次,而不是仅仅一次。(翻开块1,128 k大,使用第一个4k;再次需要块#1,因为没有缓存,它再次从磁盘读取块;取出第二个4k,抛出其余的;等等)

其结果是:

无论出于什么原因,我都不可能做"primarycache=metadata“。

2当块大小像这样不匹配时,可能会导致性能问题。如果翻查读取128 k块,就不会有(显着性?)单个文件读取的差异。OTOH,如果您在不久之后再次需要该文件,缓存仍然会有它的数据块,并且不需要再次从磁盘中提取它。

..。

下面是一些受论坛帖子启发的测试来说明。这些示例发生在zfs数据集上,记录大小设置为128 k(默认值),主缓存设置为元数据,1G虚拟文件以不同的块大小复制,先复制128 k,然后再复制8。(向右滚动,我已经排列了复制命令w/ iostat读取)。

请注意,当块大小不匹配时,读写气球的比率和读取带宽会有多大的提高。

代码语言:javascript
复制
    root@zone1:~# zpool iostat 3
                   capacity     operations    bandwidth
    pool        alloc   free   read  write   read  write
    ----------  -----  -----  -----  -----  -----  -----
    rpool        291G   265G      0     21  20.4K   130K
    rpool        291G   265G      0      0      0      0
    rpool        291G   265G      0    515      0  38.9M            ajordan@zone1:~/mnt/test$ mkfile 1G test1.tst   
    rpool        291G   265G      0  1.05K      0   121M
    rpool        292G   264G      0    974      0   100M
    rpool        292G   264G      0    217      0  26.7M
    rpool        292G   264G      0    516      0  58.0M
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0     96      0   619K
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G    474      0  59.3M      0            ajordan@zone1:~/mnt/test$ dd if=test1.tst of=test1.2 bs=128k
    rpool        292G   264G    254    593  31.8M  67.8M                
    rpool        292G   264G    396    230  49.6M  27.9M                
    rpool        293G   263G    306    453  38.3M  45.2M                8192+0 records in
    rpool        293G   263G    214    546  26.9M  62.0M                8192+0 records out
    rpool        293G   263G    486      0  60.8M      0
    rpool        293G   263G    211    635  26.5M  72.9M
    rpool        293G   263G    384    235  48.1M  29.2M
    rpool        293G   263G      0    346      0  37.2M
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G  1.05K     70   134M  3.52M            ajordan@zone1:~/mnt/test$ dd if=test1.tst of=test1.3 bs=4k
    rpool        293G   263G  1.45K      0   185M      0                
    rpool        293G   263G  1.35K    160   173M  10.0M
    rpool        293G   263G  1.44K      0   185M      0
    rpool        293G   263G  1.31K    180   168M  9.83M
    rpool        293G   263G  1.36K    117   174M  9.20M
    rpool        293G   263G  1.42K      0   181M      0
    rpool        293G   263G  1.26K    120   161M  9.48M
    rpool        293G   263G  1.49K      0   191M      0
    rpool        293G   263G  1.40K    117   179M  9.23M
    rpool        293G   263G  1.36K    159   175M  9.98M
    rpool        293G   263G  1.41K     12   180M   158K
    rpool        293G   263G  1.23K    167   157M  9.63M
    rpool        293G   263G  1.54K      0   197M      0
    rpool        293G   263G  1.36K    158   175M  9.70M
    rpool        293G   263G  1.42K    151   181M  9.99M
    rpool        293G   263G  1.41K     21   180M   268K
    rpool        293G   263G  1.32K    132   169M  9.39M
    rpool        293G   263G  1.48K      0   189M      0
    rpool        294G   262G  1.42K    118   181M  9.32M
    rpool        294G   262G  1.34K    121   172M  9.73M
    rpool        294G   262G    859      2   107M  10.7K
    rpool        294G   262G  1.34K    135   171M  6.83M
    rpool        294G   262G  1.43K      0   183M      0
    rpool        294G   262G  1.31K    120   168M  9.44M
    rpool        294G   262G  1.26K    116   161M  9.11M
    rpool        294G   262G  1.52K      0   194M      0
    rpool        294G   262G  1.32K    118   170M  9.44M
    rpool        294G   262G  1.48K      0   189M      0
    rpool        294G   262G  1.23K    170   157M  9.97M
    rpool        294G   262G  1.41K    116   181M  9.07M
    rpool        294G   262G  1.49K      0   191M      0
    rpool        294G   262G  1.38K    123   176M  9.90M
    rpool        294G   262G  1.35K      0   173M      0
    rpool        294G   262G  1.41K    114   181M  8.86M
    rpool        294G   262G  1.29K    155   165M  10.3M
    rpool        294G   262G  1.50K      7   192M  89.3K
    rpool        294G   262G  1.43K    116   183M  9.03M
    rpool        294G   262G  1.52K      0   194M      0
    rpool        294G   262G  1.39K    125   178M  10.0M
    rpool        294G   262G  1.28K    119   164M  9.52M
    rpool        294G   262G  1.54K      0   197M      0
    rpool        294G   262G  1.39K    120   178M  9.57M
    rpool        294G   262G  1.45K      0   186M      0
    rpool        294G   262G  1.37K    133   175M  9.60M                
    rpool        294G   262G  1.38K    173   176M  10.1M                
    rpool        294G   262G  1.61K      0   207M      0
    rpool        294G   262G  1.47K    125   189M  10.2M
    rpool        294G   262G  1.56K      0   200M      0
    rpool        294G   262G  1.38K    124   177M  10.2M
    rpool        294G   262G  1.37K    145   175M  9.95M
    rpool        294G   262G  1.51K     28   193M   359K
    rpool        294G   262G  1.32K    171   169M  10.1M
    rpool        294G   262G  1.55K      0   199M      0
    rpool        294G   262G  1.29K    119   165M  9.48M
    rpool        294G   262G  1.11K    110   142M  8.36M
    rpool        294G   262G  1.43K      0   183M      0
    rpool        294G   262G  1.36K    118   174M  9.32M
    rpool        294G   262G  1.49K      0   190M      0
    rpool        294G   262G  1.35K    118   173M  9.32M
    rpool        294G   262G  1.32K    146   169M  10.1M
    rpool        294G   262G  1.07K     29   137M   363K                262144+0 records in
    rpool        294G   262G      0     79      0  4.65M                262144+0 records out
    rpool        294G   262G      0      0      0      0
    rpool        294G   262G      0      0      0      0
    rpool        294G   262G      0      0      0      0
    rpool        294G   262G      0      0      0      0
    rpool        294G   262G      0      0      0      0
    rpool        294G   262G      0      0      0      0



    root@zone1:~# zpool iostat 3
                   capacity     operations    bandwidth
    pool        alloc   free   read  write   read  write
    ----------  -----  -----  -----  -----  -----  -----
    rpool        292G   264G      0     21  22.6K   130K
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G      0      0      0      0
    rpool        292G   264G  1.03K      0   131M      0            ajordan@zone1:~/mnt/test$ dd if=test8k.tst of=test8k.2 bs=8k
    rpool        292G   264G  1.10K    202   141M  16.4M
    rpool        292G   264G  1.25K     25   161M   316K
    rpool        292G   264G    960    215   120M  15.5M
    rpool        292G   264G  1.25K      0   160M      0
    rpool        292G   264G     1K    210   128M  14.8M
    rpool        292G   264G   1010    159   126M  14.3M
    rpool        292G   264G  1.28K      0   164M      0
    rpool        292G   264G  1.08K    169   138M  15.6M
    rpool        292G   264G  1.25K      0   161M      0
    rpool        292G   264G  1.00K    166   128M  15.3M
    rpool        293G   263G    998    201   125M  15.1M
    rpool        293G   263G  1.19K      0   153M      0
    rpool        293G   263G    655    161  82.0M  14.2M
    rpool        293G   263G  1.27K      0   162M      0
    rpool        293G   263G  1.02K    230   130M  12.7M
    rpool        293G   263G  1.02K    204   130M  15.5M
    rpool        293G   263G  1.23K      0   157M      0
    rpool        293G   263G  1.11K    162   142M  14.8M
    rpool        293G   263G  1.26K      0   161M      0
    rpool        293G   263G  1.01K    168   130M  15.5M
    rpool        293G   263G  1.04K    215   133M  15.5M
    rpool        293G   263G  1.30K      0   167M      0
    rpool        293G   263G  1.01K    210   129M  16.1M
    rpool        293G   263G  1.24K      0   159M      0
    rpool        293G   263G  1.10K    214   141M  15.3M
    rpool        293G   263G  1.07K    169   137M  15.6M
    rpool        293G   263G  1.25K      0   160M      0
    rpool        293G   263G  1.01K    166   130M  15.0M
    rpool        293G   263G  1.25K      0   160M      0
    rpool        293G   263G    974    230   122M  15.8M
    rpool        293G   263G  1.11K    160   142M  14.4M
    rpool        293G   263G  1.26K      0   161M      0
    rpool        293G   263G  1.06K    172   136M  15.8M
    rpool        293G   263G  1.27K      0   162M      0
    rpool        293G   263G  1.07K    167   136M  15.4M
    rpool        293G   263G   1011    217   126M  15.8M
    rpool        293G   263G  1.22K      0   156M      0
    rpool        293G   263G    569    160  71.2M  14.6M                131072+0 records in
    rpool        293G   263G      0      0      0      0                131072+0 records out
    rpool        293G   263G      0     98      0  1.09M
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
    rpool        293G   263G      0      0      0      0
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24447496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档