Кто что использует для определения утечек памяти, посоветуйт
От: Аноним  
Дата: 19.01.09 18:42
Оценка:
Здравствуйте!
Мне интересно кто какие программы или способы использует для определения утечек памяти, я испольую для определения класс CMemoryState и способ определения с помошью этого класса описанный в msdn.
Но после того как я убрал все утечки пользуясь таким способом, утечки все еще остались, так как программа с 1500 потоками сьедает 4 гб памяти.
Посоветуйте еще какой нибудь софт для определения утечек памяти, желательно с ссылками на триал версии, или бесплатные версии или крякнутые.
Re: Кто что использует для определения утечек памяти, посове
От: Danchik Украина  
Дата: 20.01.09 01:34
Оценка: 6 (1) +2
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте!

А>Мне интересно кто какие программы или способы использует для определения утечек памяти, я испольую для определения класс CMemoryState и способ определения с помошью этого класса описанный в msdn.
А>Но после того как я убрал все утечки пользуясь таким способом, утечки все еще остались, так как программа с 1500 потоками сьедает 4 гб памяти.
А>Посоветуйте еще какой нибудь софт для определения утечек памяти, желательно с ссылками на триал версии, или бесплатные версии или крякнутые.

Тут, тебе никто уже не поможет. 1500 потоков это и есть твоя головная боль.
1500 * 1MB =~ 1.5GB — и это в лучшем случае, так как стек имеет склонность увеличиваться
http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx

Как на меня — bad design. Количество потоков не должно превышать количество процессоров в 2 раза: MaxThreads = 2 * CPU
Иначе производительность программы, да и системы, падает катастрофически.

А так, из таких, тулзовин пользуюсь BoundsChecker, но на вашем месте я бы сначала уменьшил количество потоков
Re[2]: Кто что использует для определения утечек памяти, пос
От: Аноним  
Дата: 20.01.09 07:30
Оценка: :)
Здравствуйте, Danchik, Вы писали:
D>Тут, тебе никто уже не поможет. 1500 потоков это и есть твоя головная боль.
D>1500 * 1MB =~ 1.5GB — и это в лучшем случае, так как стек имеет склонность увеличиваться
D>http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx
D>Как на меня — bad design. Количество потоков не должно превышать количество процессоров в 2 раза: MaxThreads = 2 * CPU
Согласен с вами, но фактически програма работает в порядок быстрей с 1500 потоками чем с 8 мю например, на машине на которой она работает 8 ядер.
Re[3]: Кто что использует для определения утечек памяти, пос
От: cencio Украина http://ua-coder.blogspot.com
Дата: 20.01.09 07:36
Оценка:
Здравствуйте, Аноним, Вы писали:

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

D>>Тут, тебе никто уже не поможет. 1500 потоков это и есть твоя головная боль.
D>>1500 * 1MB =~ 1.5GB — и это в лучшем случае, так как стек имеет склонность увеличиваться
D>>http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx
D>>Как на меня — bad design. Количество потоков не должно превышать количество процессоров в 2 раза: MaxThreads = 2 * CPU
А>Согласен с вами, но фактически програма работает в порядок быстрей с 1500 потоками чем с 8 мю например, на машине на которой она работает 8 ядер.
вы что-то путаете, там только на переключение между потоками куча времени уходить будет. не может она на порядок быстрей быть. попробуйте передизайнить нормально

для поиска мемориликов у нас используеться IBM Rational Purify
Re[2]: Кто что использует для определения утечек памяти, пос
От: Аноним  
Дата: 20.01.09 08:04
Оценка:
Почему я читаю что есть утечки памяти? Потому что когда запускаются 1500 потоков памяти используется примерно 1 гб, все потоки работают в цикле, через сутки работы памяти используется уже 1.5 гб.
Re[4]: Кто что использует для определения утечек памяти, пос
От: Аноним  
Дата: 20.01.09 09:48
Оценка:
Здравствуйте, cencio, Вы писали:
C>вы что-то путаете, там только на переключение между потоками куча времени уходить будет. не может она на порядок быстрей быть. попробуйте передизайнить нормально
Спасибо за ссылку.
Проблема в том что каждый поток берет данные с одного места (к которому нет доступа и изменить невозможно), обрабатывает их, и ложит в другое место, то место откуда берутся данные отдает их очень медленно для одного потока, если же сделать 2 потока то будет очень бедленно но на каждый поток. Надеюсь понятно обьяснил... вообшем смысл в том что если будет 100 потоков то скорость будет медленная за счет того места откуда берутся данные... поэтому единственный способ ускорить работу программы это увеличение кол-ва потоков.
Re[5]: Кто что использует для определения утечек памяти, пос
От: Danchik Украина  
Дата: 20.01.09 18:24
Оценка:
Здравствуйте, Аноним, Вы писали:

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

C>>вы что-то путаете, там только на переключение между потоками куча времени уходить будет. не может она на порядок быстрей быть. попробуйте передизайнить нормально
А>Спасибо за ссылку.
А>Проблема в том что каждый поток берет данные с одного места (к которому нет доступа и изменить невозможно), обрабатывает их, и ложит в другое место, то место откуда берутся данные отдает их очень медленно для одного потока, если же сделать 2 потока то будет очень бедленно но на каждый поток. Надеюсь понятно обьяснил... вообшем смысл в том что если будет 100 потоков то скорость будет медленная за счет того места откуда берутся данные... поэтому единственный способ ускорить работу программы это увеличение кол-ва потоков.

1-й поток — выгребаитель данных. Берет данные и необработанными закидывает в очередь обработки. Тоесть сделать работу по быстому.
2-й поток — выгребает необработанные данные и раздает их, посредством пула потоков, свободным потокам для обработки.

Пул потоков настроить на максимальное количество процессоров.

Thread Pool
Re[6]: Кто что использует для определения утечек памяти, пос
От: Аноним  
Дата: 21.01.09 07:58
Оценка:
Здравствуйте, Danchik, Вы писали:

D>1-й поток — выгребаитель данных. Берет данные и необработанными закидывает в очередь обработки. Тоесть сделать работу по быстому.

D>2-й поток — выгребает необработанные данные и раздает их, посредством пула потоков, свободным потокам для обработки.
В таком случае всю работу будет тормозить один поток так как необработанные данные отдаются очень медленно, мегабайты в час, а программа должна обрабатывать гигабайты и 10 ки гигабайтов в час. но если многопоточно брать данные то получается, не спрашивайте почему оссобености места откуда берутся данные, что на каждый поток мегабайты в час ... соответсвенно.. чем больше потоков тем больше скорость. Это фактически проверенно неоднократно
Re[7]: Кто что использует для определения утечек памяти, пос
От: syomin  
Дата: 21.01.09 08:06
Оценка:
D>>1-й поток — выгребаитель данных. Берет данные и необработанными закидывает в очередь обработки. Тоесть сделать работу по быстому.
D>>2-й поток — выгребает необработанные данные и раздает их, посредством пула потоков, свободным потокам для обработки.
А>В таком случае всю работу будет тормозить один поток так как необработанные данные отдаются очень медленно, мегабайты в час, а программа должна обрабатывать гигабайты и 10 ки гигабайтов в час. но если многопоточно брать данные то получается, не спрашивайте почему оссобености места откуда берутся данные, что на каждый поток мегабайты в час ... соответсвенно.. чем больше потоков тем больше скорость. Это фактически проверенно неоднократно

Вы, случайно, не по сети данные получаете, а то по описанию очень похоже — в этом случае лучше использовать асинхронный ввод-вывод с помощью select() (в UNIX'е так, в Windows должно быть что-то похожее). В этом случае получать данные у вас будет один поток, но сразу по нескольким соединениям.
Re: Кто что использует для определения утечек памяти, посове
От: Alex Ott Германия http://alexott-ru.blogspot.com
Дата: 19.02.09 21:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте!

А>Мне интересно кто какие программы или способы использует для определения утечек памяти, я испольую для определения класс CMemoryState и способ определения с помошью этого класса описанный в msdn.
А>Но после того как я убрал все утечки пользуясь таким способом, утечки все еще остались, так как программа с 1500 потоками сьедает 4 гб памяти.
А>Посоветуйте еще какой нибудь софт для определения утечек памяти, желательно с ссылками на триал версии, или бесплатные версии или крякнутые.

google performance tools — бесплатное, работает как под юниксами, так и под виндами
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.