Страница 1 из 1
использование памяти
Добавлено: 22 июл 2004, 22:25
unq
Проблемка...
Откомпилял приложение, которое создает потоки пользует семафоры, подключается к базе данных, socket и многое другое...
запускаю - все отлично работает, запускаю одновременно 20 таких приложений тоже работают.... а вот 21-ое уже и не работает

Просто не запускается... память оперативная - свободно 2-2.5 мб... а вот swap - вообще не задействован... может дело и не в памяти совсем - не знаю, но ведь 20 тестов работают стабильно....
Кто-нить сталкивался с подобным?? если да, откликнитесь пожадуйста...
Добавлено: 23 июл 2004, 09:37
exe
Похоже ограничение какое-то сработало.
Кол-во процессов на пользователя (?)
А под debugger не пробовал пустить?
Что gdb говорит, он может указать причину.
Добавлено: 23 июл 2004, 09:53
Llama
ulimit посмтри... может натолкнет на мысль???
Добавлено: 27 июл 2004, 23:51
unq
дело обстоит так:
ilimit -a - показал unlimited
а вот что показывает gdb:
Error while mapping shared library sections:
: Success.
Error while reading shared library symbols:
: No such file or directory.
[Thread debugging using libthread_db enabled]
[New Thread -150289632 (LWP 3470)]
Error while reading shared library symbols:
: No such file or directory.
Error while reading shared library symbols:
: No such file or directory.
Program received signal SIGABRT, Aborted.
[Switching to Thread -150289632 (LWP 3470)]
0x00c82402 in ?? ()
Добавлено: 28 июл 2004, 10:56
Llama
ожет у тебя просто память вместе со свопом в системе кончились???
Добавлено: 28 июл 2004, 19:19
unq
да нет... я ж говорю, что своп вообще не пользуется - свободен он...
Добавлено: 28 июл 2004, 19:24
exe
unq,
Я почти уверен глюка на thread libary. Или ограничение
в ней самой зашито.
Добавлено: 28 июл 2004, 21:27
unq
мoжет быть и в pthreaf_library...
я пробовал запустить в одном приложении 1000 потоков - не получилось, места не хватило и кстати, swаp - тоже не юзался.... Как тока я посавил ограничение вот такое:
pthread_attr_t attr;
pthread_attr_t *ptr_attr = &attr;
int stack_size = 1024 * 256;
if(pthread_attr_init(ptr_attr) == -1)
ptr_attr=0;
else
pthread_attr_setstacksize(ptr_attr,(size_t)stack_size);
стали запускаться 1000. и swap тоже не пользовался... Но это одно приложение, как тока я стал запускать 100 таких приложений, получил два результата:
1. если сидеть и запускать их ручками(по одному и не спеша) - забил и всю память.... - всего запустилось 60
2. если запускать одновременно все то swap почти не задействован, но тоже самое кол-во...
я даж не знаю, но на всякий случай, у меня FedoreCore2
Добавлено: 29 июл 2004, 18:56
unq
привет всем...
ну что, я так думаю, что у меня не в памяти проблема, в чем - остается под вопросом...
сегодня добавил еще планочку ram на 256 - получилось 512.. результат тотже что и при 256 - ровно тоже самое кол-во приложений, ни больше ни меньше....
не уж то ни кто и ни когда с таким не сталкивался????
Добавлено: 29 июл 2004, 18:59
Llama
unq, дурацкий совет - попробуй ядро 2.4 без NPTL. Хотя бы с кноппикса.
Добавлено: 03 авг 2004, 16:31
unq
Привет всем...
Нашел я проблемку...
во всем виновату semaphore SYSTEM V... как только перешел на Posix - все заработало...
Какое-то ограничение непонятное там. я так и не понял, но факт остается фактом - работает...
спасибо большое всем, кто пытался помочь...