11 марта 2014 г., 1:21 пользователь Slawa Olhovchenkov <[email protected]> 
написал:
> On Tue, Mar 11, 2014 at 12:57:08AM +0200, Anton Sayetsky wrote:
>
>> Кстати, интересный вопрос ещё возник. Допустим, имеем dataset c
>> recordsize=128k, txg timeout=10, compression=off, dedup=off.
>> Открываем файл, пишем 64к, ждём 15 секунд, пишем ещё 64к. ZFS
>> подождёт, пока наберётся данных для полного блока или уменьшит размер
>> и закоммитит по таймауту то, что есть?
>
> второе
То ли я туплю, то ли всё-таки первое, ибо:
jason@jnb:~$ ll -i perl_result
4571 -rw-r--r--  1 jason  jason  495616 11 мар 01:34 perl_result
jason@jnb:~$ zdb -ddddddddd ezroot/home/jason 4571
Dataset ezroot/home/jason [ZPL], ID 59, cr_txg 13, 3.16G, 2783
objects, rootbp DVA[0]=<0:1221b9f000:1000> DVA[1]=<0:3006dba000:1000>
[L0 DMU objset] fletcher4 lzjb LE contiguous unique double
size=800L/200P birth=205482L/205482P fill=2783
cksum=19aaf4c761:7dc13a61203:154a2e042fdf9:29eb574fc11b09

    Object  lvl   iblk   dblk  dsize  lsize   %full  type
      4571    2    16K   128K   520K   512K  100.00  ZFS plain file
(K=inherit) (Z=inherit)
                                        168   bonus  System attributes
        dnode flags: USED_BYTES USERUSED_ACCOUNTED
        dnode maxblkid: 3
        path    /perl_result
        uid     1001
        gid     1001
        atime   Tue Mar 11 01:22:09 2014
        mtime   Tue Mar 11 01:34:41 2014
        ctime   Tue Mar 11 01:34:41 2014
        crtime  Tue Mar 11 01:15:37 2014
        gen     205368
        mode    100644
        size    495616
        parent  4
        links   1
        pflags  40800000004
Indirect blocks:
               0 L1  0:1221b94000:1000 0:3006daf000:1000 4000L/400P
F=4 B=205482/205482
               0  L0 0:120cbb3000:20000 20000L/20000P F=1 B=205467/205467
           20000  L0 0:120cbf3000:20000 20000L/20000P F=1 B=205470/205470
           40000  L0 0:120cc73000:20000 20000L/20000P F=1 B=205476/205476
           60000  L0 0:120cd13000:20000 20000L/20000P F=1 B=205482/205482

          segment [0000000000000000, 0000000000080000) size  512K

jason@jnb:~$

Писал так:
#! /usr/bin/perl

open(FRANDOM, '/dev/random');
open(FOUT, '>perl_result');

read(FRANDOM, $buffer, 131072);
print FOUT $buffer;
sleep 15;

read(FRANDOM, $buffer, 65536);
print FOUT $buffer;
sleep 15;
read(FRANDOM, $buffer, 65536);
print FOUT $buffer;
sleep 15;

read(FRANDOM, $buffer, 32768);
print FOUT $buffer;
sleep 15;
read(FRANDOM, $buffer, 32768);
print FOUT $buffer;
sleep 15;
read(FRANDOM, $buffer, 32768);
print FOUT $buffer;
sleep 15;
read(FRANDOM, $buffer, 32768);
print FOUT $buffer;
sleep 15;

read(FRANDOM, $buffer, 65536);
print FOUT $buffer;
sleep 15;

read(FRANDOM, $buffer, 32768);
print FOUT $buffer;
sleep 15;

read(FRANDOM, $buffer, 4096);
print FOUT $buffer;
sleep 15;

close(FOUT);
close(FRANDOM);

Ответить