2012-02-22 5 views
1

Я хотел бы реализовать кеш в памяти (определенного типа) в моем приложении linux для пользовательского пространства.с использованием памяти пользовательского пространства linux для кэширования

то, что мне нужно, по существу такое же поведение, как и буферный буфер файловой системы linux: любая память не используется ничем другим, используется моими процессами, которые кэшируются.

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

Что бы я хотел, это linux для вызова своего рода обратного вызова, который уведомляет меня о том, чтобы удалить некоторые записи из моего кеша, когда на самом деле нужна память.

Таким образом, любая память, необходимая процессам, может быть удалена из моего кеша, и все, что осталось от памяти, предназначено для моего кеша.

есть ли способ сделать это в Linux?

- лучший способ сделать это только для мониторинга/proc/meminfo и увеличения моего размера кеша, чтобы используемая физическая память была едва меньше полной физической памяти?

+0

Это зависит от того, что вы хотите сделать. Если вы делаете что-то с файлами, возможно, лучше, чтобы linux кешировал их. –

+0

Этот вопрос напоминает мне HTTP-кеш-ускоритель Varnish, который пытается сделать то же самое. –

+0

>>> только меньше общей памяти. Использование почти 100% [или даже 90%] на самом деле не очень хорошая идея, так как время обслуживания приближается к бесконечности экспоненциально. См. Любой документ теории очередей или http://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/ – Fakrudeen

ответ

1

Это очень похоже на то, что вы пытаетесь ввести код около диспетчер виртуальной памяти (VMM). Это вряд ли будет работать так, как вам хотелось бы, или даже если это произойдет: быть очень эффективным.

Этот вопрос обсуждается в Varnish architecture notes, написанном Poul-Henning Kamp. Я настоятельно рекомендую вам прочитать этот документ, поскольку он рассказывает о том, как Varnish был разработан для эффективного взаимодействия с VMM, и может дать вам несколько идей для альтернативных идей дизайна для вашего кеша.

Любой пользовательский процесс, который пытается настроить себя на давление в системной памяти, скажем, глядя на соотношение: резидентный размер набора (rss)/виртуальный размер (vsize). Будет страдать от того, что он находится в обратной связи с VMM, и этот цикл обратной связи может иметь пагубные последствия для процесса, системы или того и другого.

Посмотрите на документацию для /proc, где можно получить rss и vsize для процесса.

Удачи.

 Смежные вопросы

  • Нет связанных вопросов^_^