Сокеты и загрузка ЦП
От: Poseidon СССР  
Дата: 10.03.18 22:06
Оценка:
есть программа использующая блокирующие сокеты в потоках.
при работе с одним потоком нагрузка на ЦП около 50%, а при нескольких запущенных потоках — почти 100%!
комп виснет (((

вопрос что делать и в чем может скрываться зло? спасибо!
Re: Сокеты и загрузка ЦП
От: kov_serg Россия  
Дата: 10.03.18 22:31
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>есть программа использующая блокирующие сокеты в потоках.

P>при работе с одним потоком нагрузка на ЦП около 50%, а при нескольких запущенных потоках — почти 100%!
P>комп виснет (((

P>вопрос что делать и в чем может скрываться зло? спасибо!

Проверяйте что возвращает recv. Да и профилирование вам в помощь
Re: Сокеты и загрузка ЦП
От: andrey.desman  
Дата: 10.03.18 23:51
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>есть программа использующая блокирующие сокеты в потоках.


Исходники есть у этой программы?
Re[2]: Сокеты и загрузка ЦП
От: Poseidon СССР  
Дата: 11.03.18 06:13
Оценка:
Здравствуйте, andrey.desman, Вы писали:

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


P>>есть программа использующая блокирующие сокеты в потоках.


AD>Исходники есть у этой программы?


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

посмотрел еще раз, в одном потоке идет закачка вроде все ок, а когда закачка в 5 потоков то
загрузка процессора очень быстро растет до 100% почти. вероятно что то напутано с синхронизацией(((
но что?
Re[3]: Сокеты и загрузка ЦП
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.03.18 10:59
Оценка: +2
Здравствуйте, Poseidon, Вы писали:

P>посмотрел еще раз, в одном потоке идет закачка вроде все ок, а когда закачка в 5 потоков то

P>загрузка процессора очень быстро растет до 100% почти. вероятно что то напутано с синхронизацией(((
P>но что?

А какой общий поток данных-то (сколько мегабайтов в секунду качается)?

А то был упомянут SSL, а расшифровка большого объема данных занимает довольно много процессорного времени. Может, все вполне законно?
Re: Сокеты и загрузка ЦП
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 12.03.18 08:57
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>есть программа использующая блокирующие сокеты в потоках.

P>при работе с одним потоком нагрузка на ЦП около 50%, а при нескольких запущенных потоках — почти 100%!
P>комп виснет (((
Вангую что-то вроде
while((err = recv(buf)) != EAGAIN) 
{
    copy(buf, file, sizeof(buf))
}

P>вопрос что делать и в чем может скрываться зло? спасибо!
Попробуй использовать неблокирующие сокеты.
Sic luceat lux!
Re: Сокеты и загрузка ЦП
От: Mr.Delphist  
Дата: 13.03.18 13:30
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>есть программа использующая блокирующие сокеты в потоках.

P>при работе с одним потоком нагрузка на ЦП около 50%, а при нескольких запущенных потоках — почти 100%!
P>комп виснет (((

P>вопрос что делать и в чем может скрываться зло? спасибо!


Маловероятно, но всё же: встречался с глюкавыми драйверами сетевух, когда расшарив кому-то более-менее толстый файл в локалке, можно было идти на обед: пока файл не скачают, машина "замерзает".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.