Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Linux


Автор: GrayCardinal 18.7.2006, 18:21
Так вот. Есть такая шняга, называется системный кэш. Это когда что-то с носителя читается и хранится в памяти ядра "до востребовния".
В top'е оно отображается : 
 127096k cached
Вещь хорошая, и довольно юзабельная. Но только в 64 битной линухе. Тама можно юзать posix_fadvise и ноупроблем. Однако ставить 64 битную и тем паче работать в ней оч. не хочется, ибо косячная дико (ИМХО).

Дык вот. Суть проблемы - может кто натыкался (случайно или специально) на соответствующие патчи ? Короче, мне надо чтоб я мог подгрузить сырцы линухи и потом_выгрузить_ ИБО, ибо триста метров памяти совсем не лишние smile

Самому патчить влом ;)   

Автор: Sardar 18.7.2006, 19:08
Цитата(GrayCardinal @  18.7.2006,  17:21 Найти цитируемый пост)
Но только в 64 битной линухе. Тама можно юзать posix_fadvise и ноупроблем. 

Разве? Системный (IO) кеш есть везде, в top'е отображеться. posix_fadvise лишь чтобы выбрать политику работы с файлом/дефайсом (последовательно, рандомно, скоро потребуеться, читаю ща и после нафих не нужен и т.д.)  По моему это в линухе должно быть под все платформы реализованно, железных особеностей тут по на первый взгляд нет... хотя в линух ядре я нуб smile

Цитата(GrayCardinal @  18.7.2006,  17:21 Найти цитируемый пост)
Короче, мне надо чтоб я мог подгрузить сырцы линухи и потом_выгрузить_ ИБО, ибо триста метров памяти совсем не лишние

А при чём тут кеш? Это штука прозрачная для приложений, максимум "совет" можно дать, что posix_fadvise и делает. Система может проигнорировать сие. 

Автор: GrayCardinal 18.7.2006, 19:19
Цитата
 должно быть под все платформы реализованно

Ниче подобного. Под i386 она вот так :
Цитата
 Система может проигнорировать сие

И поступает smile
А под 64-битную я 
$ cd /usr/src/linux-2.6.16
$ sb --cfiles
$ sb -L ./cfiles --cache-load
Все. В кэше у меня сырцы линухи. Можно спокойно работать и винт не дергается smile
Скорость работы боба после этого увеличивается на порядок (тестено на сто раз уже).
Потом выгрузить
$ sb -L ./cfiles --cache-free
Память освободилась smile Под 32-бит не катит. В ядре кода на fadvise для 32-битной _нет_.  

Автор: GrayCardinal 18.7.2006, 19:36
А про readahead вообще отдельная история smile
С 2.6.8 по 2.6.15 работает отлично, а с 2.6.16 на readahead - вообще ноль эмоций. А в 2.4 так вообще нет smile 

Автор: Sardar 18.7.2006, 19:46
Так можно же рамдиск запустить, тот же эффект.

Сижу под Gentoo, сейчас хочу для некоторых билдов sandbox в рамдиске создавать, т.к. компилер эти файлы часто дёргает. Идея уже реализована http://wiki.kaspersandberg.com/doku.php?id=projects:emerge-wrapper. 

Автор: GrayCardinal 18.7.2006, 20:01
Как-то в далеком детстве пробовал собирать линуху с tmpfs - результат... ДОЛЬШЕ. Серьезно, с грамотными тестами, с несколькими вариантами, по нескольку раз... Все равно дольше.

А рам _диск_ это просто отобрать у системы память... И все равно она будет читать в _кэш_. Т.е. в два раза больше памяти будет хавать smile 
Не, можно конечно попробовать... как тамест его включать ? smile

Добавлено @ 20:02 
Ща на LKML траблу запостю smile 

Автор: Sardar 18.7.2006, 20:10
Цитата(GrayCardinal @  18.7.2006,  19:01 Найти цитируемый пост)
Т.е. в два раза больше памяти будет хавать

Наврядли система такой быстрый девайс кешировать должна, не совсем же нубы ядро пишут. Рамдиск в ядре включаеться, make menuconfig, в файловых системах по моему.

Кстати я помню ты блочный девайс писал, опыт есть smile  можно самому за пару дней девайс написать, что память выделят, а т.к. ты в ядре, то напрямую отхавать туеву хучу страниц, оно как non-swapable memory будет. Дакльше вести себя как блочный девайс с ограниченными размерами, форматнуть под что нибудь быстрое, подмонтировать - точно будешь знать что твой рамдиск, должно быть шустро  smile 
Шучу конечно, но интересно сколько бы потребвалось времени на такую вешь.  

Автор: GrayCardinal 18.7.2006, 20:38
Sardar, 
Да думал я на эту тему. Дело нехитрое, но если рэйзера4 еще и поставить  на это "чудо" то вообще пипец будет. И так еле дышет (рэйзер4) smile Фиговина пишется не за два дня а за вечер. Если надо могу наваять. Свас квас, литров двадцать.
Насчет дубов. Так на самой tmpfs как сейчас помню написано что она 
Very simple, не настоящая а только шаблон, и т.д. и т.п. Или они ее уже доделали ?

Короче, разобрался.
Суть "фишки". В лине нет fadvise. А есть только fadvise64. Однако он работает и под 32-битной. А в glibc-2.3.6 (включительно !) posix_fadvise сделана через известное место и данный факт не учитывает. Да и мой syscall был написан тоже через тоже место smile Короче если хотите юзать работающий posix_fadvise ставьте glibc-2.4, не ниже. Там все отличненько работает на обоих платформах smile

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)