<html>
  <head>
    <meta content="text/html; charset=KOI8-R" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    А сколько можно выжать из перлового http сервера запросов в секунду
    на ядро?<br>
    Я в рассылке видел 1к для hello-world, но мне кажется это мало.<br>
    <br>
    В текущем варианте у меня получается 5к http на ядро в конфигурации
    nginx +perl-fcgi.<br>
    Но sieve в выдает нагрузку 100% по CPU и результаты сильно зависят
    от запуска к запуску.<br>
    <br>
    Вопрос №2: чем лучше обстреливать?<br>
    <br>
    <blockquote
      cite="mid:B6F165A8-9769-4787-A949-9FADE6EFC826@corp.mail.ru"
      type="cite">
      <div>
        <div><br>
        </div>
        <div>Пример, который я имел в виду:</div>
        <div>Писал я UDP сервер. Мне нужно было проверить предельную
          нагрузку. Я сделал клиент, который заваливал интерфейс UDP
          пакетами.</div>
        <div>Написал асинхронный udp сервер на perl/EV. мало пакетов при
          100% CPU.</div>
        <div>Написал аналогичный сервер на C/libev. Прирост 10-20%, 100%
          CPU.</div>
        <div>Написал синхронный сервер на Pure Perl. Прирост 400%.</div>
        <div><br>
        </div>
        <div>Ситуация оказалась довольно простая: в синхронном варианте
          всё, что делает сервер - это вызывает в цикле recv, тогда как
          в асинхронном почти на каждый пришедший пакет вызывается
          on_read watcher.</div>
        <div><br>
        </div>
        <div>Решилось довольно просто.</div>
        <div>SO_RECVBUF был поднят до нескольких мегабайт, а после
          прочтения пакетов из сокета следующий on_read ставился не
          сразу, а через 0.0001s.</div>
        <div>После этого изменения на каждый on_read мы вычитывали не
          1-2 пакета, а, в зависимости от значения таймера, от 10 до
          1000 пакетов за 1 раз.</div>
        <div><br>
        </div>
        <div>соответственно оверхед от ev был сведен к процентам и
          производительность получилось почти такая, как у синхронного
          варианта.</div>
        <div><br>
        </div>
        <div>PS: Perl/EV на 1 core при 100% загрузке CPU в пределе может
          обработать около 450-500k udp pkt/s</div>
        <div><br>
        </div>
      </div>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <br>
  </body>
</html>