powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / B-Tree и фрагментация памяти.
10 сообщений из 10, страница 1 из 1
B-Tree и фрагментация памяти.
    #38618188
Фотография gbl37004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если мы навтыкали в B-tree ключей, а потом несколько случайных из них удалили, то маловероятно, что дерево будет занимать памяти столько же, сколько бы оно занимало, если бы мы в пустое дерево добавили все оставшиеся ключи с начала.

То есть, когда мы удаляем узел в каком-нибудь std::map, деаллокатору говорят "верни память, выделенную под этот узел", память освобождается, в дереве крутятся узлы и всё. В B-Tree узлы хитрее, а удаление одного ключа далеко не всегда означает освобождение какой-либо памяти или удаление каких-либо узлов.

Насколько B-Tree подходит для приложений, в которых идёт оперативное добавление-удаление ключей?

Имеется приложение, хранящее 1 млрд ключей в b-tree. В это дерево активно добавляются ключи и при переходе их количества за предел, запускается процедура поиска и удаления старых. В дереве поддерживается одно и то же логическое количество записей.

При этом приложение медленно и верно растёт по памяти, а valgrind молчит. Возникают подозрения на описанный в первом абзаце эффект. Эмуляция проводилась на дереве меньшего размера, эффект проявляется, но потребление памяти постепенно стабилизируется и перестаёт расти.
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618198
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbl37004Если мы навтыкали в B-tree ключей, а потом несколько случайных из них удалили, то маловероятно, что дерево будет занимать памяти столько же, сколько бы оно занимало, если бы мы в пустое дерево добавили все оставшиеся ключи с начала.

А с чего такие далеко идущие выводы?

Если valgring молчит, то каким образом ты узнаёшь, что память течёт?
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618200
Фотография gbl37004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivgbl37004Если мы навтыкали в B-tree ключей, а потом несколько случайных из них удалили, то маловероятно, что дерево будет занимать памяти столько же, сколько бы оно занимало, если бы мы в пустое дерево добавили все оставшиеся ключи с начала.

А с чего такие далеко идущие выводы?

Если valgring молчит, то каким образом ты узнаёшь, что память течёт?
1. Далеко идущие выводы из устройства b-tree.
2. Смотрю на количество занимаемой процессом памяти. Логически постоянно одно и то же количество объектов, а память всё жрёт и жрёт.
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618249
B-клоук
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паше, ты уверен, что именно B-дерево реализовал?
Узел (кроме корневого) всегда заполнен не менее чем наполовину в B-дереве
Если жалко памяти - B* дерево рассмотри
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618625
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbl37004Насколько B-Tree подходит для приложений, в которых идёт оперативное добавление-удаление ключей?

Если ты добавил ключик и велика вероятность (90%) что следущая транзакция этот ключик удалит
то лучше хранить последние изменения в маленьком LRU буфере и по его заполнению вытесняемые
ключи складывать в дерево.

Или разбить дерево на несколько поддеревьев. Одно - оперативное а другое для долгосрочных данных.
Для каждого - подобрать персонально способ хранения и размер блока.
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618741
Фотография боевые
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
B-клоукПаше, ты уверен, что именно B-дерево реализовал?
Узел (кроме корневого) всегда заполнен не менее чем наполовину в B-дереве
Если жалко памяти - B* дерево рассмотри
Я не реализовал, взял готовое гугловое.
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618744
Фотография боевые
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytongbl37004Насколько B-Tree подходит для приложений, в которых идёт оперативное добавление-удаление ключей?

Если ты добавил ключик и велика вероятность (90%) что следущая транзакция этот ключик удалит
то лучше хранить последние изменения в маленьком LRU буфере и по его заполнению вытесняемые
ключи складывать в дерево.

Или разбить дерево на несколько поддеревьев. Одно - оперативное а другое для долгосрочных данных.
Для каждого - подобрать персонально способ хранения и размер блока.
Такие соображения разумны, но текущая ситуация состоит в том, что имеется некая реализация, которая охреневает по памяти и хочется понять причину.
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618796
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
боевые, ты - это топик-стартер?
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618890
Фотография боевые
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonбоевые, ты - это топик-стартер?
Д...
...
Рейтинг: 0 / 0
B-Tree и фрагментация памяти.
    #38618936
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
боевыеТакие соображения разумны, но текущая ситуация состоит в том, что имеется некая реализация, которая охреневает по памяти и хочется понять причину.
А у тебя есть какие-то цифры? Ну к примеру ключи - текстовый файлик 1 млрд строк длиной 8 Гиг.
А софт во время работы аллоцировал 16 гиг. Или что-то в этом роде.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / B-Tree и фрагментация памяти.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]