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);