Максимальный размер буфера

Работа с файлами и базами данных
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Максимальный размер буфера

Сообщение Yuva »

Есть еще вопрос.

Какого максимального размера буфер на сдвиговых регистрах можно создать в LabVIEW?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Максимальный размер буфера

Сообщение Borjomy_1 »

Для 32- разрядной Windows ограничение 2Гб, для 64 - неизвестно, но много ))))
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Спасибо!
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Максимальный размер буфера

Сообщение dadreamer »

Размер ограничен оперативной памятью, которую может выделить ОС для одного процесса, и это зависит не только от разрядности системы, но и от разрядности :labview: : http://www.labviewportal.org/viewtopic. ... 00&p=49533
И вот ещё ссылка Memory Limits for Windows Releases, согласно ей получаем такие пределы:
On 32-bit versions of Windows, a single process can map and address no more than 3GB of virtual memory at time. In 64-bit versions of Windows, a 32-bit process can map and address no more than 4GB of virtual memory at a time.

For 64-bit processes, the amount is difficult to calculate as there are numerous overlapping limits that could apply depending on all kinds of factors. It's typically around 7TB.
Однако я с трудом представляю, какой нужно написать код и какие структуры пропускать через регистры, чтобы занять столько памяти. Да и в этом случае о стабильности приложения бессмысленно говорить, :labview: может вылететь в любой момент при компиляции, запуске, завершении работы.
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Спасибо!
dadreamer писал(а): Однако я с трудом представляю, какой нужно написать код и какие структуры пропускать через регистры, чтобы занять столько памяти.
Просто есть задача сохранять с платы поток данных, который передается по гигабитному изернету. Хотя я вот попробовал это, и большой скорости передачи что-то не заметил. За минуты 3 только 10 Мбайт передалось.
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Кстати и буфер по мере заполнения медленнее заполняться начинает
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Максимальный размер буфера

Сообщение dadreamer »

Yuva писал(а):есть задача сохранять с платы поток данных, который передается по гигабитному изернету.
А зачем вам абсолютно все данные? Вы же физически не сможете просмотреть и проанализировать такой объем информации. Для архивирования было бы достаточно некоторых средних значений за определенный промежуток времени. Да и в регистрах держать данные не стоит, а лучше писать сразу в файл.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Максимальный размер буфера

Сообщение Borjomy_1 »

Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Ну в дальнейшем наверно так у будет. А сейчас пока нужно проверить скорость передачи данных. И какими с потерями или без потерь данные приходят.
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Borjomy_1 писал(а):Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
Спасибо! Попробую
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Borjomy_1 писал(а):Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
Добрый день!

То что Вы имели ввиду можно сделать таким способом или массив обязательно создавать перед циклом?
Буфер udp.jpg
Буфер udp_false.jpg
Буфер все равно медленно заполняется
Вложения
Top_eth2.rar
(43.54 КБ) 174 скачивания
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Максимальный размер буфера

Сообщение Borjomy_1 »

В принципе и такой вариант с выделением памяти правильный. Но...
У вас есть преобразование.
Буфер udp.png
Сначала вы фактически делаете копию регистра, потом преобразуете ее в строку. В результате на каждой итерации объем данных становится 3 х Накопленный массив. Есть необходимость на каждой итерации писать весь буфер функцией "save text"? Записывайте только принятые данные.
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Спасибо за замечание!
Переделал. Быстрее стало записывать. Без замедлений. Только вот скорость записи в буфер не столь велика. Если сохранять данные с UDP Read Fuction сразу в файл, то на много быстрее получается. Можно ли как то скорость записи в буфер увеличить?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Максимальный размер буфера

Сообщение dadreamer »

Yuva писал(а):Можно ли как то скорость записи в буфер увеличить?
Можно сделать два параллельных цикла: получение данных и обработка (запись в единый буфер, вывод на экран, прочие действия), обмен данными между циклами организовать через очереди. Но если у вас в общем буфере сотни мегабайт, то всё равно :labview: будет тормозить, чем больше данных, тем сильнее.
Yuva
beginner
beginner
Сообщения: 32
Зарегистрирован: 09 фев 2011, 14:19
Версия LabVIEW: 2013
Контактная информация:

Re: Максимальный размер буфера

Сообщение Yuva »

Здравствуйте!
Спасибо за совет! А у Вас есть какие-нибудь примеры использования очереди? Пришлите пожалуйста, если можете))
Заранее благодарен!
Ответить

Вернуться в «Сохранение данных»