Я пишу бизнес-кейс для реализации параметра lruskips. Я знаю преимущества (и они, вероятно, значительны). То, что я не знаю, - это накладные расходы на производительность с точки зрения памяти и т. Д. Я считаю недостатком. В конце концов, нам нужна сбалансированная точка зрения! OpenEdge 10.2B08 Различные варианты Windows с не исправлены с помощью Linux.Openedge 10.2B08 lruskips overhead
ответ
Функция устраняет накладные расходы, избегая домашней работы, связанной с поддержанием цепи LRU. Использование его не добавляет каких-либо требований к памяти и снижает потребление ЦП.
Вместо того, чтобы перемещать блок в голову цепи LRU каждый раз, когда он ссылается, он делает только то, что указывает каждый X. Поэтому вместо выселения блока, который является абсолютно «наименее недавно использованным», блок, который, вероятно, не совсем недавно используется, будет выселен.
Единственный потенциальный недостаток заключается в том, что теоретически теоретически может быть порочный случай, когда слишком высокая установка может привести к некоторым решениям о выселении. IOW «вероятно» часть вещей оказывается неверной, потому что вы недостаточно проверяете (вы в основном преобразовали управление -B в очередь FIFO).
Например, установка его на 1000000 с -B 1000 может быть не очень умной. (Но большая проблема, вероятно, - B 1000)
Предположим, что вы сделали это (set -lruskips 1000000 -B 1000), и ваше приложение имеет сочетание «нормального» доступа, а также несколько фоновых процессов, выполняющих какие-то последовательное сканирование для поддержки отчетов.
Материал для составления отчетности будет содержать множество данных, которые он просматривает только один раз (или несколько раз). Эти данные будут немедленно помещены в конец очереди MRU и будут перемещаться к концу LRU по мере чтения новых данных.
Несмотря на то, что к нему часто обращаются, рабочий набор «нормальных» данных будет перенесен на конец LRU, поскольку обновление счетчика доступа пропускается. С маленьким -B он скоро упадет с конца и будет выселен. И тогда следующий доступ вызовет IO, и цикл перезапустится.
Чем выше вы устанавливаете -lruskips, тем более чувствительным вы становитесь таким. -lruskips 10 устранит 90% домашнего хозяйства lru и должен быть очень и очень низким уровнем риска. -lruskips 100 устранит 99% домашнего хозяйства и все равно будет ужасно низким риском (если -B не сумасшедший). Если у вас нет особого набора обстоятельств, устанавливающих его выше 100, кажется, в основном бессмысленно. Вы хорошо справляетесь с «уменьшением отдачи» и, возможно, подталкиваете свою удачу к извращенным результатам.