_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Oleg Polyanski 2:5020/400 07 Dec 99 23:44:12
Subj : page cache, unified buffer cache и buffer cache
________________________________________________________________________________
From: Oleg Polyanski <luke@jet.msk.su>
>>>>> "Wladimir" == Wladimir Mutel writes:
>> >> Зачем нужен сабж в Линуксе? Как я понял данные, с диска кешируются в
>> >> двух структурах сначало в буферном кеше, потом в кеше страниц. Что
>> это >> дает?
Wladimir> Тормоза это дает. Из-за чрезмерного копирования память-память.
Wladimir> Потому, вроде, в ядре 2.4 будет единый page cache, как в BSD4.4
Wladimir> (FreeBSD). Т.е. кэш буферов и своп объединятся.
>> Unified buffer cache в Линуксе появился ещё в 1996 году. И его эффект
>> заключается вовсе не в объединении кеша буферов и свопа.
Wladimir> Расскажи. А то я понял, что сказал чепушишку. А как на самом
Wladimir> деле - не знаю. Что все-таки радикального делают с кэшем в 2.4 ?
Традиционно, с 70-х годов, Юникс выделял статическое количество
буферов при загрузке ядра, которые назывались buffer cache. Затем,
когда в 80-х был изобретён в BSD mmap, появился отдельный список
страниц - page cache. При этом I/O буферизовался, натурально, через
статический buffer cache до тех пор, пока в 1989 году в SVR4 не
удавили bufer cache, пустив I/O через VM, получив динамически
меняющийся unified buffer cache, который адаптировался под текущие
потребности системы. 4.4 BSD, которая вышла в 1993 году HЕ имела
unified buffer cache, там всё было как в доисторические
времена. Потом, тихо и не спеша, все free unices обзавелись UBC,
кроме OpenBSD.
Что до Линукса, то, кажется, VFS layer держал отдельный список
страниц для метаданных, который мешал, ээээ, масштабированию на много
процессоров. Его-то Твиди и давил в 2.3. Подробности смотреть в
архивах L.K.M.