Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кэширование файла в оперативку 
V
    Опции темы
12usver12
Дата 18.10.2013, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 5.1.2007

Репутация: 1
Всего: 1



Ситуация такова, есть внешняя консольная программа, которую выполняют через командную строку, программа имеет большую базу данных около 300 мб в виде одного файла. 
Работает так: запрос от клиента, запускается программа , считывается база данных в память (при этом идет медленная и ресурсоемкая задача считывания с винта), 3-4 сек прога отработала выдала результат и закрылась и так по кругу в несколько потоков. Из-за чего катасрофически падает производительность т.к. ограничена скорость с чтения с медленного магнитного винта. 

Хотелось бы какое-то решение на уровне ос, кэширования этого файла базы данных в оперативную память т.к. он не изменяется, чтобы он подгружался не с диска, а с памяти сразу. На эту внешнюю программу я не могу повлияеть и перестроить ее.  
Что можно придумать ? Интересует как програмное (через винапи какие-нить) так и готовое какое-нибудь решение на уровне какого-то по или функции ос. 
   
PM MAIL   Вверх
12usver12
Дата 18.10.2013, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 5.1.2007

Репутация: 1
Всего: 1



кажется решил проблему свою softperfect.com/products/ramdisk/     
без драйвера тут не обойтись 
PM MAIL   Вверх
GremlinProg
Дата 19.10.2013, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(12usver12 @  19.10.2013,  01:00 Найти цитируемый пост)
ramdisk

ага, верное направление!


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
o2n3e
Дата 19.10.2013, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.8.2011

Репутация: нет
Всего: -5




Модератор: Сообщение скрыто.

PM MAIL   Вверх
volatile
Дата 19.10.2013, 10:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(o2n3e @  19.10.2013,  07:48 Найти цитируемый пост)
Какраз-таки в нормальных ОС - есть нормальный файловый кеш

Можно подумать в венде этого нет.
Этот способ будет точно также работать и в венде, как и в никсе, только это ламерский способ.
Вполне может получиться так, что при следующем обращении к файлу, он уже будет благополучно замещен в кеше другим.
Потому-что попадание зависит от параметров кеширования, от частоты обращения к этому файлу, от частоты обращений к диску других приложений (одним словом от фазы луны).
Лучше уж вы бы как раньше, просто "учили жить" без конкретики, за умного может бы сошли ... smile  (для некоторых наивных школьников)  smile 


Это сообщение отредактировал(а) volatile - 19.10.2013, 10:58
PM MAIL   Вверх
12usver12
Дата 19.10.2013, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 5.1.2007

Репутация: 1
Всего: 1



volatile +1
если учесть что и оперативки не так уж и много, кто ж его будет кэшить то постоянно
PM MAIL   Вверх
akizelokro
Дата 19.10.2013, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



memory-mapped files


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
feodorv
Дата 19.10.2013, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Цитата(akizelokro @  20.10.2013,  00:23 Найти цитируемый пост)
memory-mapped files 

Цитата(12usver12 @  18.10.2013,  22:43 Найти цитируемый пост)
есть внешняя консольная программа

Возможно, эта "внешняя консольная программа" уже пользуется mmap'ом, возможно, что и нет (и не понятно, есть ли возможность переписать её под mmap). Для нескольких потоков это не плохой вариант (понятно, что даже при этом файл не будет постоянно в оперативной памяти). Но если программа сильно "внешняя", приходится искать другие пути.


Цитата(12usver12 @  19.10.2013,  00:00 Найти цитируемый пост)
кажется решил проблему свою softperfect.com/products/ramdisk/

Цитата(12usver12 @  19.10.2013,  14:33 Найти цитируемый пост)
если учесть что и оперативки не так уж и много

Ramdisk сожрёт часть оперативной памяти, могут начаться проблемы с производительностью ОС. Наряду с ramdisk'ом было бы недурно доставить памяти...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volatile
Дата 20.10.2013, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(akizelokro @  19.10.2013,  23:23 Найти цитируемый пост)
memory-mapped files 

Это не влияет на кеширование.
При открытии он не считывается в кеш.
При долгом не обращении (при активной работе других приложений с диском), уходит из кеша.
В общем ничем практически не отличается от обычных read() write() в плане кешированя.

PM MAIL   Вверх
akizelokro
Дата 20.10.2013, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



Цитата(volatile @  20.10.2013,  10:22 Найти цитируемый пост)
При открытии он не считывается в кеш.
При долгом не обращении (при активной работе других приложений с диском), уходит из кеша.
В общем ничем практически не отличается от обычных read() write() в плане кешированя.


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



--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
GremlinProg
Дата 20.10.2013, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(akizelokro @  20.10.2013,  20:20 Найти цитируемый пост)
Никто не мешает батник написать или запустить этот выполняемый файл как процесс из самописного внешнего. Эти два решения никак не отрицаются в первоначальной постановке задачи, так что для справки, что бывает и такое, подойдёт. А дальше решать уже автору темы.
А чем родительский процесс поможет дочернему, если дочерний читает базу напрямую из файла?
Цитата(volatile @  20.10.2013,  12:22 Найти цитируемый пост)
Это не влияет на кеширование.При открытии он не считывается в кеш.При долгом не обращении (при активной работе других приложений с диском), уходит из кеша.В общем ничем практически не отличается от обычных read() write() в плане кешированя.

Вобщем-то, и RAM-диск вроде не должен хранить данные в физической памяти. В этом плане, решение с memory-mapped files аналогичное. Но, учитывая:
Цитата(12usver12 @  18.10.2013,  23:43 Найти цитируемый пост)
Хотелось бы какое-то решение на уровне ос
и
Цитата(12usver12 @  18.10.2013,  23:43 Найти цитируемый пост)
На эту внешнюю программу я не могу повлияеть и перестроить ее.
RAM-диск все же логичнее.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
volatile
Дата 20.10.2013, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(GremlinProg @  20.10.2013,  21:04 Найти цитируемый пост)
Вобщем-то, и RAM-диск вроде не должен хранить данные в физической памяти. В этом плане, решение с memory-mapped files аналогичное. 

Не аналогичное.
Рам диск (нормальный конечно) хранит исключтельно в физической памяти. и никаким образом с диском и файлом не связан. (он даже не свопится, то есть всегда в физ.памяти)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0878 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.