<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-02-08 21:35 GMT+03:00 Daniel Podolsky <span dir="ltr"><<a href="mailto:onokonem@gmail.com" target="_blank">onokonem@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">о! собеседник!<br>
<br>
>> > Ага. В этом смысле асинхронный подход ближе к реальности.<br>
>> вам ближе к реальности или деньги зарабатывать?<br>
> Смотря чем зарабатывать. Есть много задач, где асинхронный код позволяет<br>
> сильно сэкономить ресурсы серверов.<br>
а вот давайте разберемся, какие именно ресурсы серверов позволяет<br>
сэкономить асинхронный код, и справедливо ли это утверждение для<br>
асинхронного кода на перле.<br>
<br>
изложите, пожалуйста, тезис об экономии подробнее. а то я так много об<br>
этом думал, что мгновенно начинаю с демонами в своей голове<br>
разговаривать, как об асинхронном перле речь заходит :(<br></blockquote><div><br></div><div>Экономия по сравнению с prefork моделями в Perl. Если задач "io-bound", а не cpu bound. Просто один процесс блокирующий может обрабатывать 1 заброс в данный конкретный момент времени, а неблокирующий сколько вашей душе угодно (пока не уперлись в лимиты). Так или иначе вес процесса в perl достаточно высокий, а также после fork расшареные страницы клонируются может и не все, но многие, то есть шарим не так много (были тесты еще в mod_perl1 сообществе).</div><div><br></div><div>Если у вас задача обрабатывать 10000 параллельных соединений с малой нагрузкой на CPU, то в prefork модели вам понадобиться 10000 worker'ов, а в событийной N CPU*1 (или 2, 4, 6 - не считал потери).</div><div><br></div><div>Если у вас задача CPU bound, то вам событийная модель мало чем поможет. Единственное, что вы можете сделать, так это распараллелить один таск на несколько ядер (тредами, горутинами, сторонней либой, Си+треды, ...). Не важно как вы это сделаете, но если у вас 64 ядра и вы можете за разумное время на них исполнять только 64 параллельные задачи одновременно, то какая разница на какой это модели.</div><div><br></div><div>Если задача memory bound, то опять число обработчиков ограничено памятью системы и как вы не старайтесь, но на N задача нужно O(k*N) памяти и размер самого worker'а уже не имеет значения.</div><div><br></div><div>О thread'ах в perl говорить не будем.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Best regards, Ruslan.</div>
</div></div>