Тема: ARC max size
Показать сообщение отдельно
  #11  
Старый 12.05.2018, 01:21
Slawa Olhovchenkov
Guest
 
Сообщений: n/a
По умолчанию ARC max size

Slawa Olhovchenkov написал(а) к Eugene Grosbein в May 18 00:18:16 по местному времени:

Нello Eugene!

12 May 18, Eugene Grosbein writes to Slawa Olhovchenkov:

SO>>>> женя, твой любимый костыль сломан:
SO>>>> vfs.zfs.arc_max=367001600
SO>>>> ARC Size: 137.21% 480.24 MiB
SO>>>> Target Size: (Adaptive) 100.00% 350.00 MiB
SO>>>> Min Size (Нard Limit): 43.71% 152.99 MiB
SO>>>> Max Size (Нigh Water): 2:1 350.00 MiB
SO>>>> На самом деле даже это все вранье и ARC жрет в данном случае
SO>>>> примерно
SO>>>> 28.309 zfsznodecache 264*(112417+23)
SO>>>> 36.250 ziodata_buf131072 131072*(78+212)
SO>>>> 38.252 dmubuf_implt 232*(168711+4179)
SO>>>> 79.938 ziobuf512 512*(160568+3144)
SO>>>> 92.703 ziobuf16384 16384*(5829+104)
SO>>>> 113.354 dnode_t 728*(160804+2466)
SO>>>> 749.027 abd_chunk 4096*(35881+155870)
SO>>>> 1138.46MB
EG>>> В таких случаях тащем-то надо упоминать ветку, ревизию и даже
EG>>> платформу, так как неработа лимита на i386 для меня не новость. И
EG>>> наличие локальных патчей на ZFS тоже.
SO>> ой, ну догадайся: 11-STABLE latest, amd64, ванилька (никаких патчей
SO>> вообще) стал бы я гундеть, если бы там были какие-то патчи? всегда же
SO>> можно попытаться стрелки перевести.

EG> Ну вот у меня есть 11.1-STABLE/amd64 r325097 с 64G памяти,
EG> ZFS и лимитом в 32G. Откуда вообще отквоченные цифры и как
EG> мне посмотреть их у себя?

ограничиваешь всю память до двух гигов (возможно это опционально)
разворачиваешь сырцы
скрипт size.pl
#!/usr/bin/perl
use Fcntl ':mode';
$list = shift @ARGV;
open F,'<',$list;
while(<F>) {
@F = split;
my
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)
= stat($F[0]);
next unless $mode & S_IFREG;
next if $size == 0;
print "$F[0] $size\n";
}
close F;

find /usr/src | size.pl > list.size

скрипт test-mfu.pl
#!/usr/bin/perl
# input is file list w/ sizes from 2)
$list = shift @ARGV;
$set_size = shift @ARGV;
my (@mfu, @mru);
$mfut_size = 10241024$setsize;
$mfu_size = 0;
$mru_size = 0;
print "Size calculated\n";
open F,'<',$list;
while(<F>) {
@F = split;
if($mfusize < $mfu_tsize) {
$mfu_size += $F[1];
push @mfu, $F[0];
} else {
$mru_size += $F[1];
push @mru, $F[0];
}
}
close F;
print "MFU $mfusize MRU $mrusize\n";
print "Started\n";
my @List = @mru;
$cnt = 4; $n = $cnt;
foreach $f (@mfu) {
open F,'<', $f; while(<F>) { } close F;
}
print "Loop2\n";
while(1) {
foreach $f (@mfu) {
open F,'<', $f; while(<F>) { } close F;
if(--$n == 0) {
$n = $cnt;
$l = shift @List;
if(scalar @mru == 0) {
@List = @mru;
print "mru reset\n";
}
open F,'<', $l; while(<F>) { } close F;
}
}
print "Loop\n";
}

Запускаем с
vfs.zfs.arc_max=367001600
test-mfu.pl list.size 300

проверяем через zfs-stats -A
еще скрпит vmstatSum.pl
#!/usr/bin/perl
while(<>) {
if($s == 2 && /^$/) { exit 0; }
if($s == 1 && /^$/) { $s = 2; next; }
if(/^ITEM/) { $s = 1; next; }
next unless ($s == 2);
printf "%8.3f %20s %d(%d+%d)\n", $2($3+$4)/1024/1024, $1, $2,$3,$4 if /(.+):\s+(\d+),\s+\d+,\s+(\d+),\s+(\d+),/;
}

vmstat -z | vmstatSum.pl | sort -n




... 60кг нераспечатанных листингов сберегают одно дерево.
--- GoldED+/BSD 1.1.5-b20110223-b20110223
Ответить с цитированием