Страница 1 из 1
вопрос по сокетам
Добавлено: 29 июн 2006, 20:57
Gur
300 сокетов постоянно обмениваються данными (пробовал и poll и select). Загрузка СPU в районе 30% как показывает sar и top. Никто не подскажет, можно ли уменьшить загрузку CPU.
Добавлено: 29 июн 2006, 21:57
mend0za
обычно такая фигня, если постоянно опрашивать writefds (select) и POLLOUT (poll)
происходит по причине того, что и poll и select фактически вхолостую гоняют процессор (т.к. мгновенно возвращают то, что сокет готов к приёму данных)
рекомендации (если это наш случай) - логику переделать так, чтобы writefds/POLLOUT взводилось только перед передачей данных, а не всё время.
Добавлено: 29 июн 2006, 22:06
Gur
Дело в том что poll() работает не в постоянном цикле. Он вызываетсья через заданный интервал для того, что бы забирать пакеты которые могут прийти на этот сокет (POLLIN). В то же время сокет может посылать что то свое. И вот когда их как бы и не так много, штук 300, они каждые 10мс где то получают данные и каждые 10 мс отсылают.
Вот все никак не пойму нормально это или нет

Добавлено: 30 июн 2006, 01:38
mend0za
было бы 100% - было бы ненормально
Добавлено: 30 июн 2006, 10:32
bobrik
Хм, а какая частота? 30% от 3000 и 30% от 800 две большие разницы
