LINUX.ORG.RU
ФорумTalks

[cache][вещества] возможно ли настроить кэш?

 ,


0

0

возможно ли запретить кэшировать мусор некого конкретного приложения?
например кэш торрентов - оно мне ни разу не нужно - как его «забанить»?
и возможно ли?

★★★★

Последнее исправление: megabaks (всего исправлений: 1)

Ответ на: комментарий от val-amart

Он сделал огромный вклад в развитие highload, разбирается в архитектуре современных ОС очень очень хорошо(и не только в фряхе, хотя в ней лучше всех и на то есть причины).

В чём его унолость и что сделал ты для opensource?

true_admin ★★★★★
()
Ответ на: комментарий от mr_D

а теперь смотри сюда!
торрент работает всегда! сколько он памяти ест мне глубоко пох!
а вот то что он засирает кэш вытесняя полезное из него - не есть гуд!
просветление снизошло? догнал о чём говоришь ты и о чём я?

megabaks ★★★★
() автор топика
Ответ на: комментарий от annoynimous

у него при запуске задаётся минимальный приоритет
не надо костылями кидаться - я о них всех знаю...

megabaks ★★★★
() автор топика
Ответ на: комментарий от mr_D

понимаешь разницу между памятью занятой софтиной(RSS) и кэшем?

megabaks ★★★★
() автор топика

> возможно ли запретить кэшировать мусор некого конкретного приложения?

В смысле чтобы приложение, которое активно работает с диском не мешало другим приложениям вымывая из оперативной памяти их данные?

Самое первое, что может придти в голову - использовать для таких приложений отдельный компьютер.

Другой вариант посложнее - нужно научится делать прямое чтение с диска/запись на диск, минуя общий кэш операционной системы + создать для приложения свой собственный кэш в оперативной памяти со своими политиками вытеснения данных и т.д. Также нужно будет создать непрерывный файл на диске собственного размера и придумать способ хранения своей информации в этом файле. Опционально можно научится писать напрямую в сырые разделы. Процессом чтения/записи должны заниматься отдельные процессы, причем они должны синхронизировать свою работу с работой приложения и с работой операционной системы.

Собственно это путь по которому идут все базы данных. Для них не подходит стандартный алгоритм кэширования данных, поэтому они создают свой кэш и применяют свои собственные алгоритмы управления этим кэшем. Честно говоря никогда не задумывался над тем, как им удается (и удается ли?) читать/писать данные минуя обычный кэш операционной системы.

sign
()
Ответ на: комментарий от megabaks

ТО, что ты хочешь — глупо. В любом случае, страницы дискового кэша синхронизируются через весьма короткое время (десятки секунд), за это время даже в потоке диск считает жалкие сотни мегабайт. Единственный железхный способ удержать данные, например, браузера в памяти — это запускать его с профилем, лежащем на tmpfs

annoynimous ★★★★★
()
Ответ на: комментарий от sign

да! об этом я и говорю :)
вот и интересуюсь - есть ли готовые варианты?

megabaks ★★★★
() автор топика
Ответ на: комментарий от annoynimous

это не глупо!
если не понял чего я хочу - перечитай тред!
З.Ы. как же достали «Ъ» которые даже не пытаются думать...да куда там - даже читать!

megabaks ★★★★
() автор топика
Ответ на: комментарий от anon_666

это неугодный мне костыль!
ибо это мягко говоря не гуд при отрубании напруги например

megabaks ★★★★
() автор топика

Можно еще посмотреть в сторону виртуальных машин.

Честно говоря просто не знаю, будет ли кэшироваться образ диска гостевой операционки в кэше операционки хозяина. Если не будет - то решение готово. Будет просто достаточно запустить прохорливую до диска программу в гостевой операционке в виртуальной машине.

sign
()
Ответ на: комментарий от sign

не - это сильно жёстко...даже жестоко %)

megabaks ★★★★
() автор топика
Ответ на: комментарий от anon_666

> Прибавит тормозов только.

Ну правильно. Цель ведь в этом и состоит - прибавить тормозов одной программе, чтобы она не мешала другим.

sign
()
Ответ на: комментарий от sign

>Ну правильно. Цель ведь в этом и состоит - прибавить тормозов одной программе, чтобы она не мешала другим.
не правильно!
перечитывай тред!

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Отключения кэша для какой-либо программы равносильно Direct I/O всех ее запросов. Знаешь, к чему это приводит? К тормозам, потому что любой запрос проги приводит к немедленной постановке его в очередь ввода-вывода, а поскольку кэш у винчестера очень мал, увеличится число дерганий головок в поиске нужной информации на пластине. As a result, даже проги, которые будут редко обращаться к диску (работая исключительно из кэша) будут вынуждены ждать долго-долго, пока очередь ввода вывода не дойдет до них.

Единственный железный способ, повторяю, сделать большую tmpfs, размерами близкую к размеру оперативной памяти и запихать в нее как можно больше прог. Тогда оставшимся дискового кэша в памяти не достанется и они будут работать напрямую с диском (не сами, конечно, но ведро заставит). Ах да, не забудь отключить своп тогда.

annoynimous ★★★★★
()
Ответ на: комментарий от sign

> Ну правильно. Цель ведь в этом и состоит - прибавить тормозов одной программе, чтобы она не мешала другим.

Приоритеты I/O и никак по-другому!

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

>Отключения кэша для какой-либо программы равносильно Direct I/O

НЕТ! Меня уже здесь в это носом ткнули!

anon_666
()
Ответ на: комментарий от annoynimous

>Отключения кэша
вообще то я рассматриваю и вариант настройки кэша - т.е. отдать торрентам всего 200-500 метров - чтоб остальной кэш был забит нужным!

megabaks ★★★★
() автор топика
Ответ на: комментарий от annoynimous

direct I/O для одной проги можно сделать подменой системной библиотеки через LD_PRELOAD на обертку, которая будет ко всем вызовам open() добавлять флаг O_DIRECT. В принципе, не так уж и сложно реализовать, но повторяю, результатом будут адские тормоза, поскольку очередь ввода-вывода на винчестере (если он один) — одна.

annoynimous ★★★★★
()
Ответ на: комментарий от anon_666

>Ну докупи рамы.
ппц!
на каждый чих апгрейд вместо настройки?
вин-стайл же )
и да - итак 2 гига - 3 смысла нет, а >=4 логичнее 64 ставить - лень )

megabaks ★★★★
() автор топика
Ответ на: комментарий от annoynimous

та не нужно мне прямое чтение!!!
мне нужно урезать кэш!
и неважно - для софтины или для директории - последнее даже лучше

megabaks ★★★★
() автор топика
Ответ на: комментарий от annoynimous

>> Ну правильно. Цель ведь в этом и состоит - прибавить тормозов одной программе, чтобы она не мешала другим.

Приоритеты I/O и никак по-другому!

Говоря «прибавить тормозов» я имел в виду не тупое добавление sleep куда-нибудь в цикл - а именно организацию такой работы, когда программе дается меньше ресурсов - например, меньше кэша + ограничивается количество данных, которое она может считать/записать в единицу времени.

sign
()
Ответ на: комментарий от megabaks

ТС, ты не понимаешь, что очередь ввода-вывода одна и любое ее увеличение (в том числе и запросами страниц, которые могли бы лежать в кэше, но выкинуты оттуда) лишь тормозит все. Если тебе нужно ускорить конкретную программу или наоборот, скорость какой-то программы тебя не волнует, то нужно рулить приоритетами.

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

> очередь ввода-вывода на винчестере (если он один) — одна.

однозначно такой программе потребуется свой отдельный физический диск + свой собственный кэш + пусть она сама читает напрямую без всяких оберток.

sign
()
Ответ на: комментарий от sign

и как ты себе представляешь тормоза?
сейчас к диску обращается аж...только торрент! )
ну и несколько байт/килобайт иногда скидывает арбузер в профиль - ФСЁ!
откуда тормоза-то?

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Только прямое чтение гарантирует отсутсвие кэширования страниц, ибо, насколько мне известно, на уровне VM нет привязки страниц к процессам.

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

>ТС, ты не понимаешь
да ну на!?
почитай чуть ниже каммент - к диску и так обращается тока торрент! а когда меня нет за компом - так тем более - откуда ещё геморы с очередью?
З.Ы. всех четвертовать!

megabaks ★★★★
() автор топика
Ответ на: комментарий от annoynimous

>на уровне VM нет привязки страниц к процессам.
ну неужели!? :)
наконец-то начинаешь понимать чего мне надо! :)

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

>и как ты себе представляешь тормоза?

сейчас к диску обращается аж...только торрент! )

тормоза оттуда, что если сейчас ему доступна для кэша ВСЯ оперативная память, то после его ограничения ему будет доступен меньший объем памяти. В общем случае меньше кэш -> больше тормоза.

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

sign
()
Ответ на: комментарий от megabaks

Почитай тогда

http://www.kneuro.net/linux-mm/index.php?file=pagecache.html

Похоже, требуется серьезная переработка всей VM, чтобы можно было уменьшать время жизни страниц, принадлежащих определенным процессам. Более того, это идет вразрез с политикой ядра «держать наиболее используемые страницы в памяти».

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

понятно что вразрез
но я лучше ядра знаю что есть мусор, а что есть нужное!
про переработку vm догадался уже давно - т.к. ни в доках нигде бы то нибыло ещё ничего даже похожего не нашёл ( да и про политику вкурсе
политика сия кстати имхо годится для сервака, но ниразу не для десктопа - иначе не было бы этого треда..

megabaks ★★★★
() автор топика

кстати раз речь про vm - немного офтопа
можно ли и как уменьшить приоритет для kswapd?
патчи-хаки-кряки - не суть важно...

megabaks ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.