+  HandyCache форум
|-+  Главная категория» Общие вопросы» Баланс быстродействия: как уменьшить влияние медленного HDD?
Имя пользователя:
Пароль:
Страниц: 1 [2]  Все   Вниз
  Отправить эту тему    Печать  
Автор Тема: Баланс быстродействия: как уменьшить влияние медленного HDD?  (Прочитано 19168 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #20 : 29 марта 2013, 14:46:04 »

Почитал, посмотрел, подумал: попахивает велосипедом, увы…
Это и есть велосипед, да еще какой )))

Почему нет желания использовать возможность кэширования самой ОС?
Есть замечательная книга "Windows Internals". Читал 5-е издание (WinXP), а в Win7 I/O subsystem и Cache manager переработаны, можно лучше указать OS что и как кэшировать, и с каким приоритетом.
Эта возможность и так используется, независимо от моего желания. Разумеется, винда уменьшает количесвто обращений к диску. Но мне не известно, насколько. У меня нет возможности каждый раз смотреть, закешировала ли она то что мне надо. А так (своим способом) я точно знаю, что большая часть операций происходит в оперативке. К тому же, у меня на ноуте не Win7, а XP.

А то получается: торренту выдели память для кэша, HC выдели память для кэша, браузеру выдели память для кэша; фотошоп уже и не запустишь((( не говоря о том что HC 32-битная программа – много не закэшируешь.
P.S. ОЗУ 8гиг и мне не хватает в пиковые моменты (подкачка отключена)
Мой случай немного проще - торрент я на ноуте на запускаю, все торренты качает ГлавныйКомп. Сестра с торрентами не дружит. При настроенном моем способе, в совокупности с кешем винды, собственный рам-кеш HC остается практически ненужным: его функции продублированы. За исключением той, что он хранит сведения о тех файлах на диске, которые в него не поместились. Об этой функции я не знал, она безусловно очень полезная. Но все равно налицо дубляж. Поэтому у меня он отключен. Фотошоп я обычно использую с браузером по очереди. Другими словами я выделяю память только опере и рамдиску. К вашему случаю, конечно, такой подход не подойдет. Но я и не ожидал, что этот подход будет универсальным и пригодным для всех. Честно говоря, я не ожидал, что он подойдет хоть кому-то, кроме меня. Я начал обсуждение, чтобы послушать мнения и советы, и возможно что-то исправить именно у себя. С тем чтобы продолжать пользоваться данной связкой еще эффективней.

P.S. После того, как узнал о функции рамкеша хранить данные о файлах, думаю что следует его (рамкеш) включить, но указать максимальный размер хранящихся там файлов очень небольшим, с тем чтобы как раз там собирались не файлы, а сведения о них. Как вам такая мысль?
Добавлено: 29 Март 2013, 14:28:49

120 кбайт можно было и тут прикрепить
Не вышло (((
Добавлено: 29 Март 2013, 14:32:27

Ну как бы и я о том же. Сейчас все хорошо, единственное хотелось всетаки сохранение РАМ кеша и его обратная загрузка при старте.
А если для цели сохранения содержимого оперативки использовать не выключение, а спящий режим? Или вам по каким-то причинам этот вариант не подходит?
Добавлено: 29 Март 2013, 14:34:32

Таки нужно смотреть в сторону БД. Что-нибудь вроде такого:...
Здесь мы говорим немного c разных позиций. Я говорю с точки зрения пользователя, который ничего не может поменять в исходной программе HC. И мои рассуждения направлены на то, как решить свои задачи, имея в НС заданный функционал. А вы смотрите с другой стороны: какой функционал нужно заложить в НС, чтобы решить свои задачи. И даже если ваши советы на самом деле очень полезны, боюсь у уважаемого mail62 не хватит времени реализовать все полезные советы с данного форума.
Мне видится, что обкатывая те или иные подходы (в том числе нестандартные), и делясь результатами здесь, можно накопить фактов, которые подтолкнут автора к реализации тех или иных функций. Если, например, форумчане сообща попробуют несколько идей с индексированием (сколько раз здесь про это писали, и как давно !!!) , используя рамдиск, то возможно выяснится самый эффективный метод, и глядя на это, mail62 таки добавит это метод в свой рамкеш )))) Выиграют все ))).


* ошибка.JPG (18.68 Кб, 800x236 - просмотрено 85 раз.)
Сообщить модератору   Записан
Re:Flex
Новичок
*

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

Сообщений: 11


« Ответ #21 : 13 апреля 2013, 11:25:56 »

Фильтры файловой системы, к примеру Enhanced Write Filter (EWF)
Не стоит благодарностей…
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #22 : 13 апреля 2013, 12:18:15 »

Про такое дело знаю. Но это не тот случай: если настраивать фильтр на раздел, где кроме кеша HC будет еще какая-то файловая активность, то это все будет в памяти, т.е. перерасход оперативки колоссальный. Если же под кеш НС выделить отдельный раздел и настраивать фильтр на него, то чем это отличается от моего способа? все тоже самое:
все операции выполняются в оперативке, к диску обращение только при выключении (в моем случае запись образа, в вашем применение изменений) и включении (у вас не предусмотрено, т.к. заполнение происходит по мере обращения, у меня загрузка образа из одного файла, что гораздо быстрее, чем куча мелких отдельных файлов).
Другими словами, хотя отличия и есть, но они не самые значительные. В основном идея та же. А вот скажите, что будет если операций на диске с настроенным фильтром произойдет больше, чем размер оперативки? насколько я помню, там это плохо кончится (((
Сообщить модератору   Записан
DIGGER
Старожил
****

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

Сообщений: 312



« Ответ #23 : 13 апреля 2013, 16:05:02 »

Цитата: Andrey_04.05
Разумеется, винда уменьшает количесвто обращений к диску. Но мне не известно, насколько. У меня нет возможности каждый раз смотреть, закешировала ли она то что мне надо.
Так укажите винде что нужно кэшировать!! К чему городить дублирующую "функцию"?
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #24 : 18 апреля 2013, 15:01:48 »

Так укажите винде что нужно кэшировать!! К чему городить дублирующую "функцию"?
Если я правильно понял, так можно указать только в Win7. И даже если указать, это не совсем то. При активности других процессов, в кеш винды пойдут их данные. Я хочу и готов отрезать от оперативки некоторый кусок, в котором гарантировано будет выполнять все свои многочисленные операции НС.
Мне только хочется, посоветовавшись с участниками форума, выработать приемы наполнения этого куска наиболее востребованной информацией.
В моем сегодняшнем варианте на рамдиске скапливаются самые легкие файлы, а все тяжелое уходит на HDD на случай "полевого" интернета через 3g-модем. А как бы копить не самые легкие, а самые нужные? Для достижения этой цели обзавелся программой для поиска дубликатов и замены их на жесткие ссылки (DuplicateSearcher). Запускаю раз в пару месяцев, дубликаты все время находятся, заменяются, кеш худеет без ушерба для экономии. Также поставил расширение от Inversion - "IgnoreOnceVisitedSites". Разумеется, папка с кешем стала значительно меньше. Уже хорошо, но не совсем то - это ра сохраняется, а ненужное нет. Мне надо так: нужное сохраняется на рамдиске, ненужное (редко нужное) - на HDD.
Пока четко формулировал эту цель, пришла в голову очевидная мысль (ну ведь правда очевидная, почему не додумался раньше Непонимаю!!)  - переносить на HDD не самое тяжелое, а то, что использовалось наиболее давно. На днях выберу время, поправлю в проге.
Кроме этого, хотел еще раз подчеркнуть, что на мой взгляд рамдиск идеальное средство для экспериментов с разного рода индексами и т.п. Хотя бы с целью накопления какой-либо статистики по эффективности тех или иных приемов.
Вот на сегодняшний день я размышляю над парой таких вопросов:
1. Так все же каков более-менее оптимальный порог размера файлов, меньше которого их не следует сохранять? Я понимаю, что не может быть однозначного ответа. Но кто сколько ставит, и чем при этом руководствуется?
Эсли с этим порогом как-то определиться, то вытекают такие соображения:
а) вариант "кеш только на рамдиске" - лучше бы не хранить совсем мелкие. Пришел запрос на файл -> НС проверил его наличие в кеше -> файла нет -> качаем в сети - > пока качаем, пишем его в кеш -> докачали, удалили. Все опереции в оперативке. Не храним миллионы файлов, размер которых нередко даже меньше, чем запись о них в MFT. Быстро, без лишних операций, красиво.  Ведь если их хранить, то в этой цепочке действий появляются еще "получить дату модификации - сравнить дату модификации - принять решение", верно?
б) вариант "основной кеш на рамдиске, кеш для чтения на HDD" - тут я не знаю, как поступить. Такой вариант нстроил для сестры. Там цель от использования НС, как я уже писал ранее, нестандартная. Не "сокращение потребления трафика" как таковая, а "субъективное ускорение работы в интернете, путем кеширования". т.е. если загрузить из сети быстрее - пусть грузится из интернета. Вот тут мне все дисковые операции не нравятся. И вот применительно к мелким файлам получится такая история: если их не храним, то НС проверяет их наличие на рамдиске -> файла нет -> проверяем их на HDD -> файла нет -> качает с сети. С учетом большого количества в сети именно мелких файлов, это бесконечные (часто по нескольку сразу, в параллель) проверки существования файла на винте. Как этого избежать? Как сделать, чтобы НС не проверял наличие тех файлов, размер которых меньше выбранного порога?
Добавлено: 18 Апрель 2013, 14:50:19

2. Видел на форуме идеи о вычислении т.н. "рейтинга" файлов. Типа чем чаще используется, чем выше рейтинг, и при очистке удалять самые "нерейтинговые". По-моему, это очень верное направление, только нужно его как-то воплотить. Я же верно понимаю, что расширение "IgnoreOnceVisitedSites" занимается практически тем же, только на уровне доменов, и реализовать похожее расширение, но на уровне файлов, не сложно? Если хранить информацию о дате и времени обращения к каждому файлу, получится весьма затратно, но можно периодически сбрасывать статистику одним файлом на диск, и обращаться ко всем таким файлам статистики только при операциях очищения кеша (раз в месяц, например. Ну здесь, конечно, зависит от скорости заполнения кеша. Но в любом случае не часто).
Сообщить модератору   Записан
DIGGER
Старожил
****

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

Сообщений: 312



« Ответ #25 : 18 апреля 2013, 17:10:02 »

Andrey_04.05, я так тоже раньше думал)))  Задам наводящий вопрос: зачем Вам такой быстрый кэш для инета? ведь это явно уже не из-за экономии трафика.
P.S. Используете до сих пор ОС WinXP?
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #26 : 18 апреля 2013, 19:26:58 »

Andrey_04.05, я так тоже раньше думал)))
Про что конкретно? в посте выше я написал много размышлений, какие совпали с Вашими?

Задам наводящий вопрос: зачем Вам такой быстрый кэш для инета? ведь это явно уже не из-за экономии трафика.
Да, тут все верно. Я писал об этом. У меня нигде нет оплаты за трафик. Есть только не особо быстрый 3g-модем, имеющий лимит на скачивание в месяц. Потом падает скорость. Я думаю, такой вариант знаком многим. Так вот интересна не экономия как таковая, а "субъективное ускорение интернета" через кэширование. Вот откуда проблемы - я пытаюсь пристроить НС не совсем по прямому назначению, и прекрасно это понимаю. Такой быстрый кеш, конечно, нужен не очень сильно. Это попытки избежать кеша на винте. Вот он, по моему мнению, просто кошмар. Я выкладывал ранее статистику по количеству файлов в моем кеше в зависимости от их размера. Там на графиках видно, что половина файлов, осевших у меня к кеше, меньше 5 кбайт (!!!). В моем случае это 70000 файлов общим объемом около 150 Мб. Остальные 70000 весят почти 2Гб. Вот их я хочу кэшировать на винте, а первую половину категорически нет.

P.S. Используете до сих пор ОС WinXP?
Да, у меня на ноуте лицензия HomeXP, вместе с ним купленная. Да и сам ноут ничего другого не потянет, средненький уже.
Но особо за нее не держусь. Основная цель - настроить все клево на компе сестры, т.к. у нее интернет через модем основной и единственный. Там Win7. На ноуте у себя я просто обкатываю некоторые идеи и настройки, затем переношу их к ней.
Добавлено: 18 Апрель 2013, 19:23:47

Кроме сестры, собрал недавно компик для тёщи, там тоже 3g модем. Так что развитие этой темы мне теперь еще более интересно )))
Сообщить модератору   Записан
DIGGER
Старожил
****

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

Сообщений: 312



« Ответ #27 : 20 апреля 2013, 18:40:33 »

Цитата: Andrey_04.05
Про что конкретно?
Почти про всё.

Если я Вас правильно понял, то у Вас на каждом компе установлен 3G модем, HC, рамдиск?
Почему бы не поставить компик отдельный и сделать его насом, поставить HC и т.д. ?
(По личному опыту - удобно)
Сообщить модератору   Записан
Inversion
Новичок
*

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

Сообщений: 17


WWW
« Ответ #28 : 21 апреля 2013, 17:23:20 »

Я же верно понимаю, что расширение "IgnoreOnceVisitedSites" занимается практически тем же, только на уровне доменов, и реализовать похожее расширение, но на уровне файлов, не сложно?

Теоретически не должно быть сложно, но из-за того, что количество файлов может на порядки превышать количество доменов, с которым я имел дело, может быть проблематично вести такую статистику в обычном текстовом файле. Ну и памяти при таком подходе буте расходоваться значительно больше (не десятки килобайт, а уже 10-20 MB). Тут уже сложно без хоть какой-то базы данных.
Добавлено: 21 Апрель 2013, 17:08:42

Еще в теме об уменьшении влияние медленного HDD стоит упомянуть совет о виртуальном диске как контейнере для хранения кэша.
Ведь позиционирование головки при сильном разбросе или фрагментации файлов — это и есть очень медленная операция и тот неприятный звук похрускивания от винчестера (на сколько я понимаю).
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #29 : 22 апреля 2013, 05:42:20 »

Если я Вас правильно понял, то у Вас на каждом компе установлен 3G модем, HC, рамдиск?
Почему бы не поставить компик отдельный и сделать его насом, поставить HC и т.д. ?
(По личному опыту - удобно)
Не совсем так. Компьютеры стоят в разных местах, не в одной квартире. В одной квартире только два мои - ГлавныйКомп (win7, 4 х 3.0 ГГц, 16 Гб Ram) и ноутбук (winXP, 2 х 2.0 ГГц, 2 Гб Ram). Интернет кабельный, безлимитный. На этой паре я экспериментирую с настойками. Затем эти настройки переношу на другие компьютеры, удаленные от меня на десятки километров: на компьютер сестры и на компьютер тёще. У них по 3g модему. У меня также есть 3g можем на случай "полевого" интернета - когда я беру ноутбук куда-либо с собой.
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #30 : 22 апреля 2013, 07:04:46 »

Теоретически не должно быть сложно, но из-за того, что количество файлов может на порядки превышать количество доменов, с которым я имел дело, может быть проблематично вести такую статистику в обычном текстовом файле. Ну и памяти при таком подходе будет расходоваться значительно больше (не десятки килобайт, а уже 10-20 MB). Тут уже сложно без хоть какой-то базы данных.

Если пытаться все время держать это в памяти, то да. А если только копить эту статистику? И периодически сбрасывать на диск, очищая память? тогда перерасхода большого не будет. Ну а затем, например по истечении пары недель (или месяца), нажать кнопку "оптимизировать кэш". И вот тут все эти файлы статистики считываются, анализируются, и из кэша удаляется наиболее редко используемое. И пусть этот процесс оптимизации потребует хоть полчаса. Его можно запустить в удобное время, когда не запущено других приложений, требовательных к ресурсам. И на выходе получаем похудевший кэш, в котором осталось только самое нужное )))
Добавлено: 22 Апрель 2013, 06:43:41

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

Совет дельный, но как дополнительный. Когда дисковые операции все же происходят, конечно лучше им быть в пределах некоторой непрерывной области. Я же пытаюсь добиться максимального сокращения этих операций.
Добавлено: 22 Апрель 2013, 06:54:32

б) вариант "основной кеш на рамдиске, кеш для чтения на HDD" - тут я не знаю, как поступить. Такой вариант настроил для сестры. Там (да и везде у меня) цель от использования НС, как я уже писал ранее, нестандартная. Не "сокращение потребления трафика" как таковая, а "субъективное ускорение работы в интернете, путем кэширования". т.е. если загрузить из сети быстрее - пусть грузится из интернета. Вот тут мне все дисковые операции не нравятся. И вот применительно к мелким файлам получится такая история: если их не храним, то НС проверяет их наличие на рамдиске -> файла нет -> проверяем их на HDD -> файла нет -> качает с сети. С учетом большого количества в сети именно мелких файлов, это бесконечные (часто по нескольку сразу, в параллель) проверки существования файла на винте. Как этого избежать? Как сделать, чтобы НС не проверял наличие тех файлов, размер которых меньше выбранного порога?

Я бы хотел снова вернуться к этому вопросу. Ответа на него для себя не могу найти. Как настроить так, чтобы не лезть к винту за мелким файлом, если его не оказалось в основном кэше? Может у кого-либо есть идеи,  до которых я не додумался?
Сообщить модератору   Записан
DIGGER
Старожил
****

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

Сообщений: 312



« Ответ #31 : 22 апреля 2013, 13:05:45 »

Цитата: Andrey_04.05
Может у кого-либо есть идеи…
Можно попробовать хранить кэш на VHD диске, может быть он будет кэшироваться несколько лучше средствами самой ОС, тут нужно проверять.
Сообщить модератору   Записан
Andrey_04.05
Новичок
*

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

Сообщений: 18


« Ответ #32 : 16 августа 2013, 13:46:03 »

Выдалось немного времени, попробовал накидать расширение для сбора статистики обращения к файлам. С луа абсолютно незнаком, пробовал делать по аналогии с "IgnoreOnceVisitedSites" от Inversion. Первый блин - по моей задумке в файл пишется имя файла целиком, вместе с путем. В моем варианте пишутся все время только пустые строки. Где-то не попал ))) И сразу второй вопрос - следом за файлом в эту же строку хочу писать дату и время обращения. Кто подскажет?
Результат моего труда:

--[[ <HCEXTENSION>
@name            Statistika
@author          Andrey_04.05@mail.ru
@version         0.1
@description     Собирает информацию об обращениях к файлам в текстовом виде для вычисления "рейтинга".
@event           BeforeRequestHeaderSend/on_BeforeRequestHeaderSend
</HCEXTENSION> ]]

g_name = re.find(hc.script_name, [[([^\\]+)\.lua$]], 1)
g_extensionRoot = re.replace(hc.script_name, g_name..[[\.lua$]], '')

function on_BeforeRequestHeaderSend()
   hc.monitor_string = hc.monitor_string ..'Test'
      f = io.open(g_extensionRoot..g_name..'DB.txt', 'a')
      if (f) then
         f:write(hc.cache_file_name..'\n')
         f:close()
      else                                                hc.put_to_log('Save failed')
         hc.monitor_string = hc.monitor_string ..' Save failed'
      end
end
Сообщить модератору   Записан
Страниц: 1 [2]  Все   Вверх
  Отправить эту тему    Печать  

 
Перейти в: