Heap fragmentation
От: Klikujiskaaan КНДР  
Дата: 06.07.10 13:04
Оценка:
Добрый день, коллеги.
Задался вопросом : отловлены все mem-лики, все отлично, все работает, но наблюдается некоторая деградация производительности (при n запусках некоторого действия). Было сделано предположение, что виной всему фрагментация С++ кучи. Есть ли средства проверки фрагментации кучи? Может быть есть какие-нибудь api-функции позволяющие выяснить это дело (какие-нить GetFreeHeapBlocks, GetNonFreeHeapBlocks and etc.)?
ОС — Винда.
Заранее благодарен за любую помощь в этом деле.

12.07.10 13:09: Перенесено модератором из 'C/C++' — Кодт
Re: Heap fragmentation
От: uzhas Ниоткуда  
Дата: 06.07.10 13:19
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>Заранее благодарен за любую помощь в этом деле.


Обсуждалось не один раз.
Ссылки:
http://rsdn.ru/forum/cpp/3791683.flat.aspx
Автор: uzhas
Дата: 29.04.10

http://rsdn.ru/forum/cpp.applied/3845183.flat.aspx
Автор: uzhas
Дата: 16.06.10

http://rsdn.ru/forum/cpp.applied/3606774.1.aspx
Автор: Pavel Dvorkin
Дата: 18.11.09
Re: Heap fragmentation
От: remark Россия http://www.1024cores.net/
Дата: 06.07.10 13:20
Оценка: 5 (1)
Здравствуйте, Klikujiskaaan, Вы писали:

K>Добрый день, коллеги.

K>Задался вопросом : отловлены все mem-лики, все отлично, все работает, но наблюдается некоторая деградация производительности (при n запусках некоторого действия). Было сделано предположение, что виной всему фрагментация С++ кучи. Есть ли средства проверки фрагментации кучи? Может быть есть какие-нибудь api-функции позволяющие выяснить это дело (какие-нить GetFreeHeapBlocks, GetNonFreeHeapBlocks and etc.)?
K>ОС — Винда.
K>Заранее благодарен за любую помощь в этом деле.

Какая винда? Если это виста и выше, то по-умолчанию включена LFH куча, которая не страдает фрагментацией. Да и для обычной кучи они вроде делали небольшой slab кэш.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: Heap fragmentation
От: Klikujiskaaan КНДР  
Дата: 06.07.10 13:54
Оценка:
Здравствуйте, remark, Вы писали:

R>Здравствуйте, Klikujiskaaan, Вы писали:


K>>Добрый день, коллеги.

K>>Задался вопросом : отловлены все mem-лики, все отлично, все работает, но наблюдается некоторая деградация производительности (при n запусках некоторого действия). Было сделано предположение, что виной всему фрагментация С++ кучи. Есть ли средства проверки фрагментации кучи? Может быть есть какие-нибудь api-функции позволяющие выяснить это дело (какие-нить GetFreeHeapBlocks, GetNonFreeHeapBlocks and etc.)?
K>>ОС — Винда.
K>>Заранее благодарен за любую помощь в этом деле.

R>Какая винда? Если это виста и выше, то по-умолчанию включена LFH куча, которая не страдает фрагментацией. Да и для обычной кучи они вроде делали небольшой slab кэш.


R>


Как раз Виста и выше. (Сам сижу под х64 семеркой)
Re[3]: Heap fragmentation
От: remark Россия http://www.1024cores.net/
Дата: 06.07.10 13:57
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

R>>Какая винда? Если это виста и выше, то по-умолчанию включена LFH куча, которая не страдает фрагментацией. Да и для обычной кучи они вроде делали небольшой slab кэш.


K>Как раз Виста и выше. (Сам сижу под х64 семеркой)


Тогда это не из-за фрагментации. LFH куча всегда O(1).


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: Heap fragmentation
От: Kh_Oleg  
Дата: 06.07.10 14:17
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>Добрый день, коллеги.

K>Задался вопросом : отловлены все mem-лики, все отлично, все работает, но наблюдается некоторая деградация производительности (при n запусках некоторого действия).
Это "некоторое действие" явно или неявно к диску обращается? Если да, то исследовать возможность кэш промахов на уровне дискового кэша.
Re[2]: Heap fragmentation
От: Klikujiskaaan КНДР  
Дата: 06.07.10 15:04
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Здравствуйте, Klikujiskaaan, Вы писали:


K>>Добрый день, коллеги.

K>>Задался вопросом : отловлены все mem-лики, все отлично, все работает, но наблюдается некоторая деградация производительности (при n запусках некоторого действия).
K_O>Это "некоторое действие" явно или неявно к диску обращается? Если да, то исследовать возможность кэш промахов на уровне дискового кэша.
Да, подгружается довольно объемная структура. Благодарю, завтра испробуем ваше предположение.
Re[4]: Heap fragmentation
От: Klikujiskaaan КНДР  
Дата: 06.07.10 18:21
Оценка:
Здравствуйте, remark, Вы писали:

R>Здравствуйте, Klikujiskaaan, Вы писали:


R>>>Какая винда? Если это виста и выше, то по-умолчанию включена LFH куча, которая не страдает фрагментацией. Да и для обычной кучи они вроде делали небольшой slab кэш.


K>>Как раз Виста и выше. (Сам сижу под х64 семеркой)


R>Тогда это не из-за фрагментации. LFH куча всегда O(1).


R>


Последние вести с полей — при потери производительности еще и растет потребляемая память. Списал бы на лики, но от них все было буквально вылизано. Что опять приводит меня в раздумья: то ли лыжи не едут, то ли фрагментация имеет место быть.
Re[5]: Heap fragmentation
От: VladFein США  
Дата: 06.07.10 18:37
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>Последние вести с полей — при потери производительности еще и растет потребляемая память. Списал бы на лики, но от них все было буквально вылизано.

Может быть просто несвоевременное освобождение памяти?
Кстати, как растет память? В смысле — до чего? В физическую память помещается?
Re[6]: Heap fragmentation
От: Klikujiskaaan КНДР  
Дата: 06.07.10 19:28
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, Klikujiskaaan, Вы писали:


K>>Последние вести с полей — при потери производительности еще и растет потребляемая память. Списал бы на лики, но от них все было буквально вылизано.

VF>Может быть просто несвоевременное освобождение памяти?
VF>Кстати, как растет память? В смысле — до чего? В физическую память помещается?
Память растет медленно — но верно =) После 1000 запусков одного и того же действия (создание нового док-та — выход без сохранения) пилообразный график расхода памяти с тендером роста вверх, пик тотати релейтетд =)
Re[7]: Heap fragmentation
От: 0xDEADBEEF Ниоткуда  
Дата: 06.07.10 20:14
Оценка: 1 (1) +1
Здравствуйте, Klikujiskaaan, Вы писали:

K>

Налицо меморилик на разницу в высоте соседних зубьев.
__________
16.There is no cause so right that one cannot find a fool following it.
Re: Heap fragmentation
От: Ops Россия  
Дата: 07.07.10 00:09
Оценка:
Мне, поидее, тоже в текущей задаче это нужно. Даже лики памяти тяжело отловить (программа месяцами работает без обслуживания), иногда глючит, почему — хз, данных набирает много, но полный лог будет сравним с количеством данных, а это критично. Если очень интересно — сбор данных с АЦП, станции стоят в деревнях, у бабушек, от которых максимум можно потребовать, чтобы ничего не трогали.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Heap fragmentation
От: Erop Россия  
Дата: 07.07.10 22:02
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>Задался вопросом : отловлены все mem-лики, все отлично, все работает, но наблюдается некоторая деградация производительности (при n запусках некоторого действия).


Вы можете терять не память, а какие-нибудь другие ресурсы. Хэндлы, окна и т. д...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Heap fragmentation
От: VladFein США  
Дата: 08.07.10 01:27
Оценка:
Здравствуйте, Erop, Вы писали:

E>Вы можете терять не память, а какие-нибудь другие ресурсы. Хэндлы, окна и т. д...

Какие хэндлы! На графике же ясно написано — "Мегабуйты"
Re: Heap fragmentation
От: minorlogic Украина  
Дата: 08.07.10 04:59
Оценка:
А по данным профилировки разве не видно , что именно тормозит ?

кстати обычно куча тормозит на освобождение а не выделение.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Heap fragmentation
От: rm822 Россия  
Дата: 08.07.10 06:20
Оценка:

        //is not working in debug mode and under debugger
        ULONG HeapType = 2;
        HeapSetInformation((HANDLE)_get_heap_handle(), HeapCompatibilityInformation,&HeapType, sizeof(HeapType));


проверять нужно в релизе и не под отладчиком
Если после этого все еще подтекает — лик у вас
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Heap fragmentation
От: Erop Россия  
Дата: 08.07.10 06:30
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Какие хэндлы! На графике же ясно написано — "Мегабуйты"

Ну битмапки, например...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Heap fragmentation
От: CreatorCray  
Дата: 08.07.10 08:09
Оценка:
Здравствуйте, rm822, Вы писали:

R>
R>        //is not working in debug mode and under debugger
R>        ULONG HeapType = 2;
R>        HeapSetInformation((HANDLE)_get_heap_handle(), HeapCompatibilityInformation,&HeapType, sizeof(HeapType));
R>


Сработает только если винда до висты.
С висты начиная хип сразу в LFH режиме работает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Heap fragmentation
От: blackhearted Украина  
Дата: 08.07.10 08:28
Оценка: :)
Здравствуйте, Klikujiskaaan, Вы писали:

K>Задался вопросом : отловлены все mem-лики


НЕ ВЕРЮ
Такого быть не может. Всегда остаётся как минимум еще один лик, просто вы ег пока не нашли. Вот он и гадит втихую.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.