Я получил 48 ГБ ОЗУ (платформа X58 с флешками 6x8 ГБ) и выделил 16 ГБ для FancyCache под Win7. FancyCache поставляется со встроенным мониторингом. Мониторинг использования - безусловно, самая важная вещь, которую вы можете сделать, чтобы сделать это определение.
Я использую это поле для взлома паролей с помощью больших словарей (~ 400 ГБ), поэтому я надеялся сохранить в ОЗУ некоторые из наиболее часто используемых словарей. К моему удивлению, из-за того, как были настроены мои скрипты, я зацикливался на одном и том же наборе хэшей с разными словарями, эффективно «загрязняя» свой кеш, постоянно читая новые словари. В результате мой коэффициент попадания в кэш был ужасно плохим (примерно 0,1%). Так что я перевернул порядок так:
от
for hash in hashes;
for dict in dicts;
crack hash with dict
в
for dict in dicts;
for hash in hashes;
crack hash with dict`
Таким образом, только что прочитанный словарь остается в памяти для следующего набора хэшей, и следующее чтение происходит из ОЗУ, а не с диска.
Этот небольшой переворот разбудил кэш чтения, так как теперь он составляет в среднем около 80%. Это одно наблюдение было на вес золота.
Кроме того, ограничение FancyCache для работы только на дисках с данными, которые, как вы знаете, будут иметь большой объем операций ввода-вывода, и не полагаться на ОС, чтобы выяснить это, также весьма полезно.
Вторым лучшим, что я сделал, было наблюдение за поведением кэширования записи. Оказывается, некоторые программы воспроизводят это безопасно и стараются выкидывать данные после каждого небольшого шанса, вместо того, чтобы объединять множественные записи в менее частые, но большие записи. Когда это было сделано полностью синхронно, это приводило к тому, что программа блокировалась до завершения записи. У меня ящик с ИБП, поэтому мне не нужно беспокоиться о сбоях до того, как кэш записи завершит обратную запись. Это очень помогло с сырой производительностью моей основной программы, но также заметно помогло с гладкостью системы, так как система не остановилась бы каждый раз, когда кэш записи был занят загрузкой грязных буферов на диск. Конечно, без ИБП (или батареи, если это ноутбук), это был бы опасный сценарий.
Все это приводит к фундаментальной проблеме CS, если размер «рабочего набора». Если вы работаете с одним файлом 4 ГБ, то, вероятно, чуть больше 4 ГБ подойдет (если приложение не попытается сохранить несколько уровней отмен в памяти). Нет смысла выделять память для FancyCache, если вы на самом деле ее не используете. Если у вас около 100%, увеличьте его, но если у вас 2%, то вы просто тратите ОЗУ.