Silitra Posted October 26, 2008 at 02:08 PM Posted October 26, 2008 at 02:08 PM #define FLUSH_TIME (10) #define REMOVE_TIME (15) FlushAndRemove() packets: 35053(rem 10738) ip2packets: 61106(rem 18476) если массив ip2packets содержит более 70К (может и боелее, в выводе не видел значения выше 70К) элементов поток зависает. какова причина ? на сколько помню размер массива в Cи не ограничен. как победит траблу?
madf Posted October 26, 2008 at 03:36 PM Posted October 26, 2008 at 03:36 PM Во первых, размер массива в С ограничен доступной памятью. Во вторых, тут не С а С++. В третьих, тут не массив а std::map. Но наблюдение, несомненно, интересное...
Silitra Posted October 27, 2008 at 04:37 AM Author Posted October 27, 2008 at 04:37 AM ну это все понятно. как лечить ?
madf Posted October 27, 2008 at 08:40 AM Posted October 27, 2008 at 08:40 AM Я вобще не вижу, почему тут может быть проблема. Возможно, совпадение?
Silitra Posted October 27, 2008 at 08:45 AM Author Posted October 27, 2008 at 08:45 AM что имеется в виду под совпадением ? а проблема есть и остается. достаточо увеличить #define REMOVE_TIME (15) и тут же попадаем на зависание потока.
den68 Posted October 27, 2008 at 06:35 PM Posted October 27, 2008 at 06:35 PM Ураа !! наконец-то кто-то взялся за Traffcounter !! как показывали эксперементы у меня, именно в нем есть зацикливание и повышение нагрузки на проц.
Silitra Posted October 27, 2008 at 06:48 PM Author Posted October 27, 2008 at 06:48 PM тебе скорей всего поможет user.cpp -lastWriteStat = stgTime + random() % settings->GetStatWritePeriod(); +lastWriteStat = stgTime + settings->GetStatWritePeriod(); если поток не слишком велик
den68 Posted October 27, 2008 at 11:43 PM Posted October 27, 2008 at 11:43 PM тебе скорей всего поможет user.cpp -lastWriteStat = stgTime + random() % settings->GetStatWritePeriod(); +lastWriteStat = stgTime + settings->GetStatWritePeriod(); .... Спасибо, это реализовано давно, чтоб поток не затыкался и все не вставало колом: #define FLUSH_TIME (3) #define REMOVE_TIME (5) понимаю что мало и неправильно но .. как-то работает, пока ... косяки где-то глубже, в идеологии сбора траффа + накопления детайл стат ...
Silitra Posted October 28, 2008 at 04:53 AM Author Posted October 28, 2008 at 04:53 AM 2den68 а можешь показать вывод FlushAndRemove() ?
madf Posted October 28, 2008 at 08:28 AM Posted October 28, 2008 at 08:28 AM Проблема трафкаунтера сейчас в том, что при любых операциях с деревом пакетов все действия блокируются. Так, например, как уже было верно подмечено den68, при FlushAndRemove лочится прием трафика. И наоборот - при приеме лочится FlushAndRemove. Решается эта проблема введением 2-х промежуточных буферов: на прием пакета и на его отдачу юзеру. При этом функции FlushAndRemove делегируются либо классу USER либо классу USERS. Этот вариант решения мы с Борей обсуждали на прошлой неделе. Сейчас он в процессе проектирования. Изменений все-таки надо будет много сделать. Кроме того я хочу полностью "отвязать" TRAFFCOUNTER от юзеров и от захватчика трафика - чтобы на него можно было написать нормальный юнит-тест. Кому интересно - могу дать текущие исходники того, что я хочу реализовать. Ели бы у нас не лежал основной канал в инет - можно было бы попробовать реализовать это вместе, используя CVS.
Silitra Posted October 28, 2008 at 08:55 AM Author Posted October 28, 2008 at 08:55 AM могу выделить отдельную машину с широким каналом и поднятым cvs. +
madf Posted October 28, 2008 at 08:57 AM Posted October 28, 2008 at 08:57 AM Широкий канал здесь и даром не нужен - нужен нормальный программист
Silitra Posted October 28, 2008 at 09:16 AM Author Posted October 28, 2008 at 09:16 AM гдеж его взять? Может вакансию откроем?
madf Posted October 28, 2008 at 09:19 AM Posted October 28, 2008 at 09:19 AM Если нет - то я и сам справлюсь. Правда это будет несколько медленно - занимаюсь проблемой по вечерам... Да и вобще, OpenSource-проекты всегда развивали энтузиасты, а не наемные работники
Silitra Posted October 28, 2008 at 09:26 AM Author Posted October 28, 2008 at 09:26 AM уже офтоп попер но всеравно не плохо, когда этот "энтузиазизм" стимулируется $. 200-300$ в месяц, на пиво ни когда не помешают
den68 Posted October 28, 2008 at 01:01 PM Posted October 28, 2008 at 01:01 PM Кому интересно - могу дать текущие исходники того, что я хочу реализовать. Ели бы у нас не лежал основной канал в инет - можно было бы попробовать реализовать это вместе, используя CVS. Давай, попробую с радостью поучаствовать, правда время не вагон ...
Silitra Posted November 29, 2008 at 08:06 AM Author Posted November 29, 2008 at 08:06 AM ну как там? дела идут ?
madf Posted November 29, 2008 at 07:51 PM Posted November 29, 2008 at 07:51 PM Потихоньку. На быстрый результат не рассчитывайте - рук не хватает.
Silitra Posted January 7, 2009 at 04:17 PM Author Posted January 7, 2009 at 04:17 PM 2madf просил нароботки выслать. смотри лс.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now