реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Посоветуйте готовый менеджер памяти
sergeeff
сообщение Jul 9 2009, 22:43
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(AlexandrY @ Jul 10 2009, 00:16) *
Я вообще-то без иронии, хотел типа уважительно выразиться.


1. Вы не очень внимательно посмотрели тексты TLSF в плане многозадачности.
2. Авторы позиционируют свой TLSF как альтернативу другим менеджерам памяти для Linux.

Ваши требования к "малым" системам уметь выделять пулы блоков постоянной длины, по-моему, слишком специфические. Посмотрите, для примера, как народ сделал в LWIP - действительно написал для этого случая свой специфический аллокатор, не имеющий ничего общего со стандартной кучей.

Мораль - для специфических требований, специфический аллокатор. Автор ветки ничего специфического не требовал.
Go to the top of the page
 
+Quote Post
pernatui
сообщение Jul 10 2009, 10:26
Сообщение #17





Группа: Участник
Сообщений: 14
Регистрация: 26-10-08
Пользователь №: 41 197



спасибо за коментарии..Применение аллокатор для сетевого стека, для которого типично наличие специфичных размеров = размеров пакетов на каждом из уровне.

У boost как есть возможность программно делать пулы для одинакового размера буферов. Буду пробовать tslf...
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 10 2009, 10:30
Сообщение #18


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Применение аллокатор для сетевого стека, для которого типично наличие специфичных размеров = размеров пакетов на каждом из уровне.


Секундочку. Там за Вас уже разработчики камня подумали wink.gif - в том смысле, что MAC DMA уже оперирует связными списками. Посмотрите, как планируемый аллокатор будет дружить с этим DMA и подумайте... Крепко подумайте...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 10 2009, 11:08
Сообщение #19


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Ваша правда по пункту 1. Там действительно обнаружилось еще пару функций обернутых мьютексами в стиле POSIX.
Недоглядел.
Сам алгоритм TLSF, я конечно уважаю, но это полуфабрикат все таки. Под боевую платформу его еще точить и точить.

Какие требования к малым системам характерны мне кажется я знаю. Портировал uCOS на процы с 2K RAM-а.
Каких и сколько влезет задач в 64K тож как бы представляю. Не разбежишься там.
Человек неминуемо через месяцок будет помнить там все задачи на перечет и даже последовательность их выполнения.
Такое возможно в малых системах и в этом принципиальное отличие от линукса где даже гуру не знают и 10% задач крутящихся в их системе.
В линуксе можно применить статистику, а в малой системе эффективнее может оказаться ручной тюнинг собственно приложения на использование блоков фиксированной длины. (не путать с тюнингом типоразмеров самих блоков менеджера)
Менеджер с блоками фиксированной длины вообще не имеет фрагментации и таким образом гораздо лучше TLSF для малых систем.
И в системе с 64K я думаю это правило еще действует.
Недавно ворочал проект с довольно крупным стеком ZigBee от TI и они там не поленились тюнингировать все приложение и операционку под менеджер с блоками фиксированной длины.
Так что говорить о специфичности таких менеджеров не приходится.

Речь даже не о том кто какого мнения, а о том что если хотите потерять 20K (служебная инфа + неминуемая фрагментация) из 64-х - применяйте TLSF


Цитата(sergeeff @ Jul 10 2009, 00:43) *
1. Вы не очень внимательно посмотрели тексты TLSF в плане многозадачности.
2. Авторы позиционируют свой TLSF как альтернативу другим менеджерам памяти для Linux.

Ваши требования к "малым" системам уметь выделять пулы блоков постоянной длины, по-моему, слишком специфические.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 10 2009, 12:18
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Никак не могу понять, откуда вы взяли цифру 20К, которую съедает TLSF? Да, там есть накладные расходы на каждый выделяемый блок. Но именно эта дополнительная информация и позволяет минимизировать ту самую фрагментацию, о которой вы говорите. Из статически выделяемых - один массив table[]

Я не агент по продвижению TLSF и привел этот проект как современный и любопытный в своей реализации. Так что "страшилки" про пожираемую им память как-то не очень обоснованы.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 10 2009, 12:58
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Что тут непонятного, посчитайте сколько тот массив table займет с макросами объявленными по дефолту, прикиньте размер объявленных типов, сделайте поправку на выравнивание, прикиньте средний размер выделяемого блока, рассчитайте их количество, умножьте на размер служебной структуры, опять учтите выравнивание, добавьте процент который авторы оставляют на фрагментацию и прикиньте сколько разработчик оставит резерва чтобы не упереться в потолок. 20K еще будет оптимистично.
И это в то время когда есть приемлемые методы вообще без фрагментации и более быстрые.

А я чтоль противник TLSF?
Тока уточняю особенности ее тактического применения


Цитата(sergeeff @ Jul 10 2009, 14:18) *
Никак не могу понять, откуда вы взяли цифру 20К, которую съедает TLSF? Да, там есть накладные расходы на каждый выделяемый блок. Но именно эта дополнительная информация и позволяет минимизировать ту самую фрагментацию, о которой вы говорите. Из статически выделяемых - один массив table[]

Я не агент по продвижению TLSF и привел этот проект как современный и любопытный в своей реализации. Так что "страшилки" про пожираемую им память как-то не очень обоснованы.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jul 10 2009, 15:04
Сообщение #22


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Могу предложить мной писанный менагер.

Главным шагом для написания своего менагера была отладка и контроль того как приложение использует кучю, тобиш что куда и сколько кладет, какое пиковое использование кучи. После отладки эти фичи отключаются дабы не съедать ресурсы. Быстродействие быстрее чем стандартные функции IAR и уж тем более быстрее чем TSLF (с другими не измерялся). Менеджер делает примитивную фрагментацию в виде слияния свободных блоков в один.

Естественно перед написанием просмотрел много всяких менеджеров вот что могу сказать про TSLF, для таких систем где памяти десятками мегабайт измеряется и очень сложные ОС работают то он может и сыграет кой какую роль, то для контроллеров там где сотни килобайт это никуда не годится. Работает TSLF медленней библиотечной функции, у меня он на таблицу сожрал 3к памяти при куче всегото в 16к smile.gif куда такое годится! Вобщем не наш это менеджер smile.gif.

P.S. менеджер потоко не защищенный, используйте синхроницию вашей ос. У меня работет с FreeRTOS и LwIP. Будут вопросы пишите или в аську.
Прикрепленные файлы
Прикрепленный файл  1111.ZIP ( 6.45 килобайт ) Кол-во скачиваний: 77
 
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 10 2009, 17:39
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Быстродействие менеджеров - штука не однозназначная. Одно дело выделить блок в пустой куче, другое дело - когда куча многократно выделялась/освобождалась. Я лично сравнивал быстродействие пары задач интенсивно использующих динамическую память. Разницы между BGET и TLSF не увидел.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jul 10 2009, 18:05
Сообщение #24


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Естественно, я проверял на пропускной способности стека LwIP c тем или иным менеджером, при динамичном обмене с переменным размером пакета. TLSF пролетает ... еще раз это менеджер для больших серьезных систем там где куча сотни мегабайт, BGET я не пробывал.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 10 2009, 18:44
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Мы лет 6 используем во всех разработках BGET. Когда я его пробовал использовать совместно с LWIP, то он тоже проигрывал встроенному менеджеру. На мой взгляд, подход, реализованный в LWIP очень неплох. Хочешь, используй свой менеджер, не хочешь - вот тебе наш готовый.
Go to the top of the page
 
+Quote Post
dch
сообщение Jul 22 2009, 02:28
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



в u-boot-е или арм буте есть компактный хорошо проверенный менеджер памяти
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016