+  HandyCache форум
|-+  Главная категория» Новые предложения» RAM-кэш
Имя пользователя:
Пароль:
Страниц: [1]   Вниз
  Отправить эту тему    Печать  
Автор Тема: RAM-кэш  (Прочитано 10415 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« : 19 февраля 2007, 23:02:01 »

Нужно сбрасывать RAM кэш при смене каталога кэша.
Иначе он запоминает ошибки когда файл не найден на диске.
« Последнее редактирование: 23 сентября 2008, 10:47:14 от DenZzz » Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #1 : 20 февраля 2007, 03:20:07 »

Согласен, нужно.
Сообщить модератору   Записан
cepera_ang
Beta tester
*****

Репутация: +9/-4
Offline Offline

Сообщений: 355


« Ответ #2 : 27 февраля 2007, 23:57:19 »

Еще по RAM кешу. Насколько я понял он работает так - первый раз файл загружается из интернета, второй из кеша на диске, и только третий раз из RAM кеша. Так как львиная доля файлов (дабы не быть голословным через недельку могу сказать % от количества запросов при выборке порядка 200тыс запросов) загружается не более 3 раз за определенный малый промежуток времени. Соответственно нынешнее использование RAM кеша не дает ускорения в очень большом проценте случаев.
Из 3752 запросов:
200 х, в т.ч. RAM - 2847 = 75% от всех ответов
200 from cache - 990 = 26.4% от всех ответов
200 RAM cache - 151 = 4.02% от всех ответов или 13% от всех файлов выданных из кеша.
Как уже было выяснено уважаемым mai62 использование рам-кеша весьма снижает нагрузку на систему.
Отсюда вопрос - можно ли сделать чтобы при первоначальной загрузке, файл сразу попадал в RAM кеш и что этому препятствует? Может быть использовать маппинг файлов в виртуальную память или еще какие-нибудь методы?
Просто память это весьма дешевый ресурс (как в плане покупки больших объемов, так и в плане стоимости операций над памятью) и стоит использовать операции в памяти/с памятью как можно больше. А если занять довольно много памяти, то все равно большая часть не будет использоваться слишком часто и будет постепенно выгружена на диск в файл подкачки и производительность не ухучшится. Зато системы с большИм объемом получат существенное ускорение.
« Последнее редактирование: 28 февраля 2007, 00:02:55 от cepera_ang » Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #3 : 28 февраля 2007, 04:08:14 »

cepera_ang
Цитировать
Насколько я понял он работает так ...
Ты правильно понял.
Мои рассуждения были приблизительно такими:
-размер файла не всегда известен до окончания загрузки файла, а до тех пор неизвестно нужно ли его будет оставлять в памяти; можно, конечно, начинать писать в память все подряд и по ходу дела принимать решение оставлять или нет, но это привело бы к усложнению алгоритма (снижению надежности), лишней нагрузке на память и процессор;
-если файл берется из кэша только один раз, то и выигрыш от использования RAM-кэш будет никакой, стоит ли затеваться (ведь само помещение файла в RAM-кэш тоже не даром дается), чтобы один раз отдать?
- НС (меня) часто упрекают в том, что он жрет много памяти и процессорного времени; поэтому я остерегался чтобы не получилось: хотел как лучше, а получилось как всегда (вместо экономии ресурсов получить перерасход).
Сообщить модератору   Записан
cepera_ang
Beta tester
*****

Репутация: +9/-4
Offline Offline

Сообщений: 355


« Ответ #4 : 28 февраля 2007, 09:07:25 »

Рассуждения логичны и понятны. Позволю себе немного поразмышлять:
Может быть сделать какой-нибудь алгоритм наподобие очереди: есть два списка файлов, первый под загружаемые из интернета, размером например 10мб на 10файлов. В процессе загрузки, если видим что очередная часть не помешается в очередь - вытесняем самый старый файл из памяти (или сначала во вторую очередь), если остался один файл, а загрузка все равно продолжается - удаляем по кускам (сейчас же в любом случае есть какие-то буферы для приема файлов?).
Вторая очередь для файлов загруженных из кеша и сохраненных в RAM, здесь можно сделать алгоритм наподобие используемого в операционных системах механизма вытеснения наиболее старого (clock-алгоритм) + для больших файлов использовать маппинг файлов виртуальную память (то есть доверить операционной системе оптимальную работу).
То есть будут настройки:
ХХ размер буфера для файлов загруженных из интернета
УУ файлов из интернета разрешено хранить в буфере
и/или ZZ - максимальный размер файла для сохранения в рам
XX2 размер ram кеша
ZZ2 - максимальный размер файла...

Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #5 : 03 марта 2007, 14:38:23 »

Собственно, не надо забывать про виндовый дисковый кеш. Как правило при "втором запросе" файл берется не с диска, а оттуда.
Сообщить модератору   Записан
sunserg10
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 322


« Ответ #6 : 11 апреля 2010, 17:59:05 »

Сейчас при выгрузке HandyCache.exe RAM-кэш сбрасывается. При последующем запуске HC, RAM-кэш по-новому наполняется фактически теми-же файлами из дискового кэша, которые были сброшены при выгрузке  HC.

Предлагаю сделать в блоке настроек RAM-кэша опцию "Сохранение при выгрузке НС".
Алгоритм поведения HandyCache при активированной опции:
При выгрузке HandyCache.exe сохранение текущего содержимого RAM-кэша в указанный файл на
жесткий диск.
При последующем запуске HandyCache: наполнение RAM-кэша из ранее сохраненного файла,
а уже затем при чтении файлов из дискового кэша.
Объем RAM-кэша, а соответственно, и сохраняемого файла ограничен уже существующей опцией "Размер кэша, не более".

По подобному принципу работает программа eBoostr 4.0 build 553 (http://beta.eboostr.com/).
Т.е. наполнение RAM-кэша из ранее сохраненного на диске файла в
десятки раз быстрее (ограничено только скоростью чтения жесткого диска),
чем наполнение RAM-кэша по-новому из сотен мелких файлов, разбросанных по файловой системе.

Т.к. большинство пользователей посещают индивидуальный набор сайтов, то польза от добавления предложенной опции будет огромная.
+ В разы увеличится скорость работы HandyCache, сразу после запуска!!!
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #7 : 11 апреля 2010, 18:27:26 »

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

Я бы не был так категоричен! Где результаты замеров скорости и соцопрос о предпочтениях пользователей? Если бы все посещали "индивидуальный набор сайтов", то все поисковики вымерли бы как класс!

Сразу после запуска ко времени инициализации самого HC (обработки настроек, списков, расширений) добавится еще время чтения большого файла с RAM-кэшем и его обработка! Поэтому время старта HandyCache и, следовательно, его готовность к работе значительно возрастет, как и время выхода из HC с сохранением настроек, а это известная "ахиллесова пята" HC.

Сейчас же наполнение RAM-кэша происходит постепенно и размазано по времени, что практически не бросается в глаза.
Кроме того, это экономит оперативную память, т.к. в RAM-кэше от сессии к сессии не залеживаются старые файлы, что неизбежно в случае сохранения/восстановления RAM-кэша.
Сообщить модератору   Записан
sunserg10
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 322


« Ответ #8 : 11 апреля 2010, 18:57:25 »

Цитировать
Я бы не был так категоричен!

Допустим, есть выделенный сервер. Он работает круглые сутки.
Выключается только при отключении электроэнергии и на выходные.

В понедельник утром на нем запускается HandyCache. Размер дискового кэша около 7 Gb, скорость случайного чтения субъективно низкая.
Т.к. наполнение RAM-кэша происходит постепенно и размазано по времени, то где-то после нескольких часов работы и посещения "индивидуального набора сайтов" (а он как догадались, у каждого свой, но редко меняется)
происходит увеличение скорости загрузки страниц, т.к. основные элементы сайта (стили, ! Java-Script, графика и др.) помещены в RAM-кэш.
Во вторник увеличение скорости еще больше, т.к. многое уже грузится из RAM-кэша => меньше нагрузка на жесткий диск, больше скорость доступа к дисковому кэшу "непосещенных" сайтов.

Внимание вопрос: зачем ждать несколько часов для увеличения производительности, если можно подождать несколько секунд для загрузки RAM-кэша из ранее сохраненного файла?

Повторюсь, это ОПЦИЯ. Ее можно отключить на старых компьютерах.
На современных компьютерах (даже 5-летней давности) скорость наполнения RAM-кэша около 1Gb/30-40 секунд. Если RAM-кэш задан не более 512Mb, то загрузка ранее сохраненного файла будет завершена за 20 секунд.

Таким образом, время, затраченное на "чтение большого файла с RAM-кэшем и его обработку"  ничтожно мало по сравнению с выгодой, которую получает пользователь.
Так как предложенный функционал именно опция, пользователь может ее активировать по своему усмотрению исходя из поставленных задач и конфигурации своего компьютера.
« Последнее редактирование: 11 апреля 2010, 19:05:14 от sunserg10 » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #9 : 11 апреля 2010, 19:25:51 »

Я бы такой опцией воспользовался. По понедельникам на работе при включении компов дружно стартуют антивирусы и приступают к полному сканировнию хардов. На этот процесс уходит часа два. В это время остальные операции файловой системы тормозят. Старт с наполненным RAM-кэшем был бы кстати. Тем более что круг посещаемых сайтов неизменен.
Ощутимо можно выиграть с такой опцией и в случае размещения кэша на сетевом диске.
Да и при иных условиях было б приятно видеть мгновенное открывание страниц в начале работы.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #10 : 11 апреля 2010, 20:09:05 »

Загрузку кэша при старте можно сделать в отдельном потоке и этот процесс не будет тормозить все остальное.
Но как быть с выгрузкой? Что при попытке закрыть его НС будет говорить: хорошо, но подождите пол минуты? Сейчас нередко жалуются, что НС не сохраняет настройки при выключении компьютера, а они быстрее сохраняются.
Сообщить модератору   Записан
sunserg10
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 322


« Ответ #11 : 11 апреля 2010, 20:33:24 »

Цитировать
Загрузку кэша при старте можно сделать в отдельном потоке и этот процесс не будет тормозить все остальное.
Но как быть с выгрузкой? Что при попытке закрыть его НС будет говорить: хорошо, но подождите пол минуты? Сейчас нередко жалуются, что НС не сохраняет настройки при выключении компьютера, а они быстрее сохраняются.

mai62, пожалуйста, сделайте данную опцию!!!
Уверен, т.к. это опция - выиграют все пользователи.
Каждый решит, что ему нужнее:
мгновенная загрузка страниц через минуту после старта и полминуты на выгрузку HandyCache,
или быстрая загрузка HandyCache, но часы более медленной работы (пока вновь не наполнится RAM-кэш).
« Последнее редактирование: 11 апреля 2010, 20:38:38 от sunserg10 » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #12 : 11 апреля 2010, 20:41:16 »

Что при попытке закрыть его НС будет говорить: хорошо, но подождите пол минуты?

Полминуты - это слишком оптимистично! У меня сейчас даже на быстром компьютере после дня работы HC выгружается секунд 20...

Сообщить модератору   Записан
sunserg10
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 322


« Ответ #13 : 11 апреля 2010, 20:49:33 »

Цитировать
Полминуты - это слишком оптимистично! У меня сейчас даже на быстром компьютере после дня работы HC выгружается секунд 20...
На то она и опция: каждый решит, что ему нужнее.
Ситуации, где данная опция просто необходима, обозначены выше.
Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: