Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> malloc/calloc только в физической памяти, хочется доступа к бытрой памяти 
:(
    Опции темы
nikkadim
Дата 23.7.2012, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день,

Подскажите, реально ли выделить память только лишь в физической области, т.е. не использовать виртуальную? 
Необходимо использовать только быструю память (работаю с GigE) для кеширования больших данных (4-5GB) перед сбросом их на диск.

Спасибо.
PM MAIL   Вверх
boostcoder
Дата 23.7.2012, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



для вянды - писать свой драйвер.
для линукс - модуль ядра.

Добавлено через 14 секунд
да и не надо оно тебе, поверь.

PM WWW   Вверх
nikkadim
Дата 23.7.2012, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, винда x64.

Может уже есть какие-нибудь библиотеки? 
Boost так не может?

Уверен, что писать драйвер мне не надо (не окупится время), а вот чтобы память пользовать - надо. smile
А если в настройках операционки убрать фвиртуальную память до минимума?

Это сообщение отредактировал(а) nikkadim - 23.7.2012, 23:19
PM MAIL   Вверх
bsa
Дата 23.7.2012, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



nikkadim, тебе зачем? почему тебя виртуальная не устраивает? В современных ОС работать с физической памятью могут только ядро и драйверы.
PM   Вверх
boostcoder
Дата 23.7.2012, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(nikkadim @  23.7.2012,  23:11 Найти цитируемый пост)
использовать только быструю память

уверен, ты не с той стороны подошел к решению задачи.

PM WWW   Вверх
nikkadim
Дата 23.7.2012, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ок.
У меня есть GigE камеры, каждая цепляется к своему PC, поток от них получаю минимум в 600 Mbit/s, мне необходимо из этого потока выделять фреймы и сохранять каждый в TIFF или в RAW где-то. Вот это "где-то" должно быть быстрее чем скорость приходящего потока, чтобы не терять фреймы (терять их я не могу, по условиям задачи). Отсюда возможностей не много, либо к каждому PC цеплять SSD, либо принимать все что валится сначала в выделенный буфер, а по окончанию потока сбрасывать это неспеша на диск.

Это сообщение отредактировал(а) nikkadim - 23.7.2012, 23:49
PM MAIL   Вверх
bsa
Дата 23.7.2012, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



nikkadim, если у ОС есть достаточно свободной физической памяти, то она ее тебе предоставит через malloc/calloc. Если нет, то сбросит в своп редкоиспользуемый кусок памяти, и отдаст его тебе.
PM   Вверх
nikkadim
Дата 23.7.2012, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(bsa @ 23.7.2012,  23:50)
nikkadim, если у ОС есть достаточно свободной физической памяти, то она ее тебе предоставит через malloc/calloc. Если нет, то сбросит в своп редкоиспользуемый кусок памяти, и отдаст его тебе.

Вот если бы это было действитель но так, наверно я был бы почти щаслив! Спасибо.
Последние Windows релизы (Win7x64) так умеют? Или подскажите плз ключевые слова, чтобы почитать про это.



PM MAIL   Вверх
boostcoder
Дата 23.7.2012, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(nikkadim @  23.7.2012,  23:40 Найти цитируемый пост)
необходимо из этого потока выделять фреймы и сохранять каждый в TIFF или в RAW где-то.

уверен, что алгоритм выделения фреймов и преобразование их в какой-то формат, займет бОльшую часть времени, нежели сохранение.

Цитата(nikkadim @  23.7.2012,  23:40 Найти цитируемый пост)
терять их я не могу

терять ты их можешь тупо из-за того что проц не успевает ;)

Цитата(nikkadim @  23.7.2012,  23:40 Найти цитируемый пост)
либо к каждому PC цеплять SSD

ты все сильно преувеличиваешь.
600 Mbit это приблизительно 70 мбайт в сек. не так то уж много. но да, редко какой хард сможет сохранять с такой скоростью без тормозов. RAID в помощь.

Добавлено через 3 минуты и 42 секунды
Цитата(nikkadim @  23.7.2012,  23:52 Найти цитируемый пост)
Последние Windows релизы (Win7x64) так умеют?

любые так умеют.

Цитата(nikkadim @  23.7.2012,  23:52 Найти цитируемый пост)
ключевые слова

гугл -> malloc

PM WWW   Вверх
nikkadim
Дата 24.7.2012, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(boostcoder @ 23.7.2012,  23:55)
Цитата(nikkadim @  23.7.2012,  23:40 Найти цитируемый пост)
необходимо из этого потока выделять фреймы и сохранять каждый в TIFF или в RAW где-то.

уверен, что алгоритм выделения фреймов и преобразование их в какой-то формат, займет бОльшую часть времени, нежели сохранение.

Цитата(nikkadim @  23.7.2012,  23:40 Найти цитируемый пост)
терять их я не могу

терять ты их можешь тупо из-за того что проц не успевает ;)

Цитата(nikkadim @  23.7.2012,  23:40 Найти цитируемый пост)
либо к каждому PC цеплять SSD

ты все сильно преувеличиваешь.
600 Mbit это приблизительно 70 мбайт в сек. не так то уж много. но да, редко какой хард сможет сохранять с такой скоростью без тормозов. RAID в помощь.

Да нет, проц курит в это время. Граббинг идет через драйвер и SDK производителя камеры, с этим все ок.
А преобразование в формат идет через Libtiff оторый добавляет лишь около сотки байт в заголовок, а далее идет RAW, тоже нагрузки практически нет.
Хороший RAID0 стоит тооже не плохо, как и хороший SDD (возможно и с рейдом) все это приводит к удорожанрию проекта, плюс изначально он планировался мобильным на лэптопах, чтобы можно было приехать быстро развернуться сделать измерения и ехать обрабатывать данные. В случае с рейдом это скорее всего тянет на DesctopPC. Так надо оно, если на борту и так есть достаточно памяти, тем более которая нужна только лишь на минуту или две.
PM MAIL   Вверх
boostcoder
Дата 24.7.2012, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(nikkadim @  24.7.2012,  00:03 Найти цитируемый пост)
Граббинг идет через драйвер и SDK производителя камеры, с этим все ок.

это происходит на отдельном компе? т.е. аппаратная обработка?

Цитата(nikkadim @  24.7.2012,  00:03 Найти цитируемый пост)
Libtiff оторый добавляет лишь около сотки байт в заголовок, а далее идет RAW

неправда.

PM WWW   Вверх
nikkadim
Дата 24.7.2012, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(boostcoder @ 24.7.2012,  00:06)
Цитата(nikkadim @  24.7.2012,  00:03 Найти цитируемый пост)
Граббинг идет через драйвер и SDK производителя камеры, с этим все ок.

это происходит на отдельном компе? т.е. аппаратная обработка?

Цитата(nikkadim @  24.7.2012,  00:03 Найти цитируемый пост)
Libtiff оторый добавляет лишь около сотки байт в заголовок, а далее идет RAW

неправда.

Нет, это на каждом.

Ок, наврал, около сотни байт еще вконце добавляет. Я не использую сжатие вообще. 
Снимаю с сенсора Bayer-массив как он есть и упаковываю его в TIFF. Но даже если и не упаковывать, разницы в скорости работы с буффером памяти в 500 фреймов с упаковкой в моих условиях нет.
Я мог бы и в RAW писать, если бы libTIFF тормоза давал, а потом уже упаковывать, но дело не в этом, а в том куда байтики польются в момент съемки сначала.

Добавлено через 10 минут и 43 секунды
Я думаю меня вполне для начала устроит факт подсказанный bsa,  нашел еще подтверждение тому в нескольких буржуйских источниках. Я об этом не знал, всегда думал что если физическая память заканчивается, то новые запросы он адресуют уже дальше по адресации в swap.  Правда как и любая дисковая операция это может хорошенько подвесить систему, помню как моя Win95 или 98 просвопивалась на автокадах и прочих студиях.


PM MAIL   Вверх
Бонифаций
Дата 24.7.2012, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в линуксе я могу Вам подсказать как сделать, чтобы область памяти была именно в RAM. Это вызов http://www.kernel.org/doc/man-pages/online...n2/mlock.2.html 

В windows не знаю.

Добавлено через 2 минуты и 49 секунд
вот мне тут коллеги подсказывают, что в win это  virtuallock()  http://msdn.microsoft.com/en-us/library/wi...5(v=vs.85).aspx


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
nikkadim
Дата 24.7.2012, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Бонифаций @ 24.7.2012,  06:40)
в линуксе я могу Вам подсказать как сделать, чтобы область памяти была именно в RAM. Это вызов http://www.kernel.org/doc/man-pages/online...n2/mlock.2.html 

Интересно, не знал. Спасибо.
PM MAIL   Вверх
GremlinProg
Дата 24.7.2012, 07:27 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Бонифаций @  24.7.2012,  08:40 Найти цитируемый пост)
в линуксе я могу Вам подсказать как сделать, чтобы область памяти была именно в RAM. Это вызов http://www.kernel.org/doc/man-pages/online...n2/mlock.2.html В windows не знаю.

в Windows это AWE: http://msdn.microsoft.com/en-us/library/wi...7(v=vs.85).aspx

но для доступа к физической памяти все равно требуется хотя бы небольшое, но виртуальное окно, т.е. тут заморочек еще хватит,
но если нужен простой статический буфер, проблем, думаю, не будет: резервируй диапазон физических страниц, мепируй их на аналогичный диапазон виртуальных страниц и пиши-читай туда что хошь, ни кто его не отберет и не сбросит на диск

Добавлено через 2 минуты и 54 секунды
правда тут потребуются некоторые привилегии,
которые, впрочем, нужны и на virtuallock


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

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


 




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


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

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