On Wed, Aug 25, 2004 at 02:53:42PM +0300, George Danchev wrote:
> On Wednesday 25 August 2004 13:17, Peter Pentchev wrote:
> --cut--
> > Какво точно искаш да кажеш с това 'да получи на вход'?  Ако имаш предвид
> > да се даде на tar опция -b 1800, така че то да прави write() на парчета
> > от 900KB и bzip2 да получава по 900KB при всеки read(), аз виждам два
> > възможни сериозни проблема с това:
> 
> Мда, точно така, не виждам нищо лошо в:
> tar cf - dir -b 1800 | bzip2 > dir.tar.bz2

Значи да попитам пак: смяташ, че ако размерът на изходния блок на tar е
равен на размера на входния блок на bzip2, това ще доведе до повишаване
на производителността, така ли?  Един малко тъп въпрос: защо?  Т.е. как?
Т.е. какво точно смяташ, че ще се подобри?

Единственото, което на мен ми се струва възможно да се подобри, е това
bzip2 да си получава входа с по-малко работа, т.е. с по-малко syscalls,
т.е. да получава по 900KB (или по-точно по 899981 байта) при всяко
извикване на read() - а това е *точно* това, което смятам, че няма начин
да стане :)  Ако имаш някаква друга идея за това как точно ще се подобри
работата на bzip2, ако на tar му зададеш -b 1800, казвай!

А на всичкото отгоре тук има и допълнителен момент: числото 899981 съм
го взел от това, което показва bzip2 -vv9 largefile.  Т.е. блоковете на
bzip2 всъщност *не са* по 900KB, а са по 899981 байта, и на практика
няма начин да убедиш tar да прави точно толкова големи блокове, колкото
bzip2 иска, така че цялата тази история е още малко безсмислена май...

> макар, че чак сега се замислям над това и до сега не съм го ползвал.
> Но сега го изтествах няколко/доста пъти и с дифф проверих наистина ли 
> оригинала се запазва след горното архивиране/компресиране и 
> декомпресиране/деархивиране. Ми всичко е ОК.

Нее, като говоря за сериозни проблеми нямам предвид загуба на данни :)
Май пак не се изразих както трябва :)  Имам предвид причини това да не
доведе до повишаване на производителността.

> Нямам време да тествам с time и да гледам compress ratio-то на горното с и без 
> разни стойности на -b, но -b 1800 приляга според мен идеално на -9 на 
> bzip2 ;-)

И пак питам - как и защо? :)

> Според мен ядрото няма да бута в пайпа наведнъж всичките 899981 байта ;-) 
> горната команда ще мине и на фрийсби, почти съм сигурен... просто тези 899981 
> байта ще бъдат подадени на по-малки части и това си е работа на ядрото мисля 
> да контролира двата края на пайпа и колко влиза и колко излиза в и от тях.

Така де, така - и точно затова ядрото и от двата края на пайпа не
поддържа блокове по 899981, следователно bzip2 няма начин да прочете
наведнъж 899981 байта - и с какво ще се подобри работата му тогава?
Особено при положение, че 1800 * 512 != 899981 :)

Поздрави,
Петър

-- 
Peter Pentchev  [EMAIL PROTECTED]    [EMAIL PROTECTED]    [EMAIL PROTECTED]
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
What would this sentence be like if pi were 3?

Attachment: pgpr67PTFWe4x.pgp
Description: PGP signature

Reply via email to