вопрос по сокетам

Все о программировании под *nix
Gur
Заглянувший
Сообщения: 3
Зарегистрирован: 20 июн 2005, 23:37
Откуда: как бы Минск
Контактная информация:

вопрос по сокетам

Сообщение Gur »

300 сокетов постоянно обмениваються данными (пробовал и poll и select). Загрузка СPU в районе 30% как показывает sar и top. Никто не подскажет, можно ли уменьшить загрузку CPU.

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

обычно такая фигня, если постоянно опрашивать writefds (select) и POLLOUT (poll)

происходит по причине того, что и poll и select фактически вхолостую гоняют процессор (т.к. мгновенно возвращают то, что сокет готов к приёму данных)

рекомендации (если это наш случай) - логику переделать так, чтобы writefds/POLLOUT взводилось только перед передачей данных, а не всё время.
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Gur
Заглянувший
Сообщения: 3
Зарегистрирован: 20 июн 2005, 23:37
Откуда: как бы Минск
Контактная информация:

Сообщение Gur »

Дело в том что poll() работает не в постоянном цикле. Он вызываетсья через заданный интервал для того, что бы забирать пакеты которые могут прийти на этот сокет (POLLIN). В то же время сокет может посылать что то свое. И вот когда их как бы и не так много, штук 300, они каждые 10мс где то получают данные и каждые 10 мс отсылают.
Вот все никак не пойму нормально это или нет :?

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

было бы 100% - было бы ненормально
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Аватара пользователя
bobrik
Неотъемлемая часть форума
Сообщения: 313
Зарегистрирован: 17 авг 2005, 12:42
Откуда: Витебск
Контактная информация:

Сообщение bobrik »

Хм, а какая частота? 30% от 3000 и 30% от 800 две большие разницы :)
http://bobrik.name - я не вар'ят

Ответить