Strona 1 z 1

Jak obliczyć potrzebną pamięć do obsługi bufora programu?

: 20 gru 2017 20:05
autor: spalinowy
Witam,

problem mam jak w temacie. Chodzi mi o obliczenie odpowiedniej przestrzeni pamięci, która posłuży jako bufor. Dajmy na to, że typ danych to SGL, do tego 4 kanały o próbkowaniu 1 kHz. Obecnie daję na oko, ale jak to wyznaczyć? Bo łatwo przesadzić i w jedną i drugą stronę.
Głownie problem pojawia się jak tworzę nowy plik do zapisu, bo wtedy dane zapełniają bufor, a jeśli okno będzie otwarte za długo, to bufor się przepełni i wyskoczy błąd.

Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?

: 20 gru 2017 22:10
autor: pawhan11
Zależy jaka duża historia jest potrzebna, powinno być to przez kogoś zdefiniowane inaczej na zdrowy rozsądek. Przy 1k o obecnych rozmiarach ramu to kilka minut spokojnie może być.
Zainicjalizuj sobie tablice na początku programu + jakis wskaznik ile danych jest wypełnione w buforze + rotowanie i nadpisywanie tych danych. Alternatywnie na szybko można zrobić fixed queue dla każdego kanału wtedy masz rotowania z głowy, tylko się trzeba pobawić z jakims lockowaniem żeby dane się nie poprzesuwały wzgledem siebie.

https://lavag.org/topic/3469-data-loggi ... ar-buffers
https://lavag.org/topic/20356-a-simple- ... fer-input/

Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?

: 20 gru 2017 23:32
autor: spalinowy
Na sztywno tak właśnie robię, że mam tablicę, mnożę ją z próbkowaniem i współczynnikiem. I właśnie ten współczynnik jest kluczowy, bo nie wiem jak go określić. Jednak chciałbym umieć określić ile moje tablice zajmą pamięci i nie dobierać go na chłopski rozum.
Natomiast nadpisywanie tablic raczej nie jest możliwe, gdy używam DAQmx, bo na początku trzeba zdefiniować ustawienia.

Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?

: 21 gru 2017 00:03
autor: czab
Ja daje taki bufor, by odpytywanie z DAQmx odbylo sie gdzies pomiedzy 100ms - 250ms. Wtedy watek chodzi zwawo i rzesko, timeout mozna ustawic na sekunde i Windows powinien sobie spokojnie radzic z tak zawrotnym tempem.

Nie uzaleznialbym tego od historii. Akumulacja danych przy obecnym RAM w osobnym buforze na potrzeby przetworzen to na ogol malutki problem.

Wiecej uwagi poswiecam tematowi, kiedy albo jest multum kanalow, albo kosmiczna predkosc probkowania, albo jakies bardzo specjalne obliczenia "w locie". Z reszta, w tym ostatnim przypadku i przy zapisie do plikow (szczegolnie TDMS), czesto zrzucam dane do innego dodatkowego bufora i np. zapisuje raz na 20 akwizycji zeby plik nie puchl od metadanych.