The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Linux or multithread?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Linux or multithread?"
Сообщение от ghost emailИскать по авторуВ закладки on 09-Окт-02, 04:09  (MSK)
Привет всем!

Сразу оговорюсь - НИКАКОГО ФЛЕЙМА!

Итак, насколько я знаю Линукс не умеет разделять сегмент кода для нескольких тредов. (или нет?) То есть он грузит отдельно каждую копию программы. Насколько это сказывается на производительности сервера? Скажем, если запущено много одинаковых приложений? У меня стоит сервер, который в основном используется для телнета к нему и телнета с него. Поэтому там всегда около 100 юзверей и телнет запущен раз 80... Он начал затыкаться время от времени из-за нехватки ресурсов. Поможет ли здесь BSD? И насколько? Сервер: Pentium 800; RAM 128Mb.

Заранее спасибо!

/SergeyK

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Linux or multithread?"
Сообщение от SandySandy emailИскать по авторуВ закладки on 09-Окт-02, 05:23  (MSK)
IMHO.
Должно помочь ограничение ресурсов для юзеров на количество процессов и обьему оперативной памяти.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Linux or multithread?"
Сообщение от ghost emailИскать по авторуВ закладки on 09-Окт-02, 07:55  (MSK)
>IMHO.
>Должно помочь ограничение ресурсов для юзеров на количество процессов и обьему оперативной
>памяти.

Так вот этого делать не хотелось бы.... Они родные должны все паолучить что могут. Просто ресурсы хочется поэкономить, не зарезая юзеров, а им дать побольше.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Linux or multithread?"
Сообщение от Soldier Искать по авторуВ закладки on 09-Окт-02, 07:25  (MSK)
>Привет всем!
>
>Сразу оговорюсь - НИКАКОГО ФЛЕЙМА!
>
>Итак, насколько я знаю Линукс не умеет разделять сегмент кода для нескольких
>тредов. (или нет?) То есть он грузит отдельно каждую копию программы.

Ну как же не пофлэймить если вы мягко говоря (грубо сказать воспитание не позволяет ;-)))
не правы. У Linux-а сегмент кода read-only и всегда разделяется -  как для fork (тяжеловесный процесс) так и для vfork  и thread-ов (здесь разделяется также сегмент данных) А в вашем случае, я думаю, виноват inetd/xinetd который каждый раз запускает in.telnetd  по новой - так причем здесь Linux?


>Насколько это сказывается на производительности сервера? Скажем, если запущено много одинаковых
>приложений? У меня стоит сервер, который в основном используется для телнета
>к нему и телнета с него. Поэтому там всегда около 100
>юзверей и телнет запущен раз 80... Он начал затыкаться время от
>времени из-за нехватки ресурсов. Поможет ли здесь BSD? И насколько? Сервер:
>Pentium 800; RAM 128Mb.
>
>Заранее спасибо!
>
>/SergeyK


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Linux or multithread?"
Сообщение от ghost emailИскать по авторуВ закладки on 09-Окт-02, 08:05  (MSK)
>>Привет всем!
>>
>>Сразу оговорюсь - НИКАКОГО ФЛЕЙМА!
>>
>>Итак, насколько я знаю Линукс не умеет разделять сегмент кода для нескольких
>>тредов. (или нет?) То есть он грузит отдельно каждую копию программы.
>
>Ну как же не пофлэймить если вы мягко говоря (грубо сказать воспитание
>не позволяет ;-)))
>не правы. У Linux-а сегмент кода read-only и всегда разделяется -  
>как для fork (тяжеловесный процесс) так и для vfork  и
>thread-ов (здесь разделяется также сегмент данных) А в вашем случае, я
>думаю, виноват inetd/xinetd который каждый раз запускает in.telnetd  по новой
>- так причем здесь Linux?

Хм, так это не флэйм, а разьяснение истины для заблудших (меня то есть). То есть вы хотите сказать что делая fork запускается еще один thread по той же самой физической памяти (сегменту кода)? Хм.. может мы о разном говорим или я что то не так изьяснил. В общем пошло это с одного из семинаров где мне довелось присутствовать, так вот докладчик сказал что "у Линукса нет разницы между понятиями "thread and process" якобы для него это все process. В то время как в Solaris - это разные вещи. threads могут разделять один сегмент кода, а процессы - каждый имеет свой.
Разьясните плиз - а то так и помру неучем, так ли это? И если нет то запустив in.telnetd как демон я получу разделение сегмента кода?

Заранее спасибо!

/SergeyK

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Linux or multithread?"
Сообщение от Soldier Искать по авторуВ закладки on 09-Окт-02, 10:08  (MSK)
>Хм, так это не флэйм, а разьяснение истины для заблудших (меня то
>есть). То есть вы хотите сказать что делая fork запускается еще
>один thread по той же самой физической памяти (сегменту кода)? Хм..
>может мы о разном говорим или я что то не так
>изьяснил. В общем пошло это с одного из семинаров где мне
>довелось присутствовать, так вот докладчик сказал что "у Линукса нет разницы
>между понятиями "thread and process" якобы для него это все process.
>В то время как в Solaris - это разные вещи. threads
>могут разделять один сегмент кода, а процессы - каждый имеет свой.
>
>Разьясните плиз - а то так и помру неучем, так ли это?
>И если нет то запустив in.telnetd как демон я получу разделение
>сегмента кода?
>
>Заранее спасибо!
>
>/SergeyK


Если под "разделением кода" имеется ввиду его совместное использование, то вроде я все понял правильно. Вообще если подразумевать, что thread  должен иметь PID родителя, в то в Linux-е thread (я имею ввиду библиотеку libpthread,  единственную с которой работал) конечно тоже  является процессом. Только насчет разделения кода скорее всего вы неправильно поняли докладчика. Для подробностей читайте man и doc, а здесь я коротенько:

при запуске fork  создается новый процесс, со своим адресным пространством, но использующий тот же сегмент кода.

thread (libpthread)  - у него только PID  и stack  свой, все остальное общее с родителем.

С  telnet я не разбирался, по моему in.telnetd и сделан чтоб запускаться из inetd,  так что вряд ли он может использоваться как демон и сомневаюсь что BSD чем то здесь поможет (хотя кто знает...). Вобщем смотрите  ответ N1 (SandySandy) - он более по теме.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Linux or multithread?"
Сообщение от ghost emailИскать по авторуВ закладки on 09-Окт-02, 22:23  (MSK)

>при запуске fork  создается новый процесс, со своим адресным пространством, но
>использующий тот же сегмент кода.
>
>thread (libpthread)  - у него только PID  и stack  
>свой, все остальное общее с родителем.

То есть никакой разницы с Solaris нет? ОК, ну тогда я спокоен... Спасибо!

/SergeyK

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Linux or multithread?"
Сообщение от yur Искать по авторуВ закладки on 10-Окт-02, 02:33  (MSK)
>>Хм, так это не флэйм, а разьяснение истины для заблудших (меня то
>>есть). То есть вы хотите сказать что делая fork запускается еще
>>один thread по той же самой физической памяти (сегменту кода)? Хм..
>>может мы о разном говорим или я что то не так
>>изьяснил. В общем пошло это с одного из семинаров где мне
>>довелось присутствовать, так вот докладчик сказал что "у Линукса нет разницы
>>между понятиями "thread and process" якобы для него это все process.
>>В то время как в Solaris - это разные вещи. threads
>>могут разделять один сегмент кода, а процессы - каждый имеет свой.
>>
>>Разьясните плиз - а то так и помру неучем, так ли это?
>>И если нет то запустив in.telnetd как демон я получу разделение
>>сегмента кода?

Скорее всего, товарисч хотел донести до вас следующую мысль - в Linux треады эмулируются через отдельные процессы, с которыми и работает ядро. В Solaris для ядра нет понятия процессов - там есть тн. LWP, с котрыми собсно и происходит работа. При создании нового процесса (fork) и при создании новой thread (thr_create) в Solaris происходят разные операции...
Сразу скажу, так это или нет для Linux - не знаю,  глубоко не ковырял.
Но то, что в Solaris thr_create на порядок эффективнее fork -  это проверено неоднократно; слишком много дополнительных операций fork делает:)

>>
>>Заранее спасибо!
>>
>>/SergeyK
>
>
>Если под "разделением кода" имеется ввиду его совместное использование, то вроде я
>все понял правильно. Вообще если подразумевать, что thread  должен иметь
>PID родителя, в то в Linux-е thread (я имею ввиду библиотеку
>libpthread,  единственную с которой работал) конечно тоже  является процессом.

В Solaris thread как раз и не является процессом:)))

>Только насчет разделения кода скорее всего вы неправильно поняли докладчика. Для
>подробностей читайте man и doc, а здесь я коротенько:
>
>при запуске fork  создается новый процесс, со своим адресным пространством, но
>использующий тот же сегмент кода.
>
>thread (libpthread)  - у него только PID  и stack  
>свой, все остальное общее с родителем.
>
>С  telnet я не разбирался, по моему in.telnetd и сделан чтоб
>запускаться из inetd,  так что вряд ли он может использоваться
>как демон и сомневаюсь что BSD чем то здесь поможет (хотя
>кто знает...). Вобщем смотрите  ответ N1 (SandySandy) - он более
>по теме.

В данном случае треады и fork тут ни при чем; in.telnetd  в Solaris и FreeBSD не является
многопотоковым приложением - весь вопрос в том, насколько хорошо VMS использует
один и тот же elf-файл...
Я думаю, что вам имеет смысл понять что именно "тормозит" и попытаться оптимизировать
вашу систему; по-моему это лучше, чем метаться между разными OС:))

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру