Как оказалось, что эти цифры выкинуть на свалку. Понял это, когда решил повышать количество дочерних процессов до использования свопа. FreeBSD и Linux имеют немного разные стратегии использования памяти. Например, FreeBSD говорит, что уже нет свободной, но потом достает из закромов еще кусочек.
Кстати, из этого всего понял, что COW - это больше скорость fork, чем снижение количество потребления памяти. Раньше думал, что памяти больше экономит. Хотя 50% тоже не мало. P.S. Самого Curl 7.33 и 7.39 версии сильно отличаются по потреблению памяти. On Tue, 24 Feb 2015 09:21:58 +0200 Nick Kostirya <[email protected]> wrote: > Привет всем. Вопрос по использованию памяти при fork. > > Есть у меня perl приложение, которое создает дочерние рабочие процессы. > Родительский процесс постоянно дает дочерним задания, дочерние отправляют > ответы в главный. Количество дочерних процессов постоянно. > > В дочерних процессах кроме perl кода исполняется C код: парсер html страничек > и Curl (если используется). > > Приложение может использовать в качестве HTTP клиента: LWP, Curl, > AnyEvent::HTTP. > > Сколько памяти занимает приложение смотрел по количеству свободной памяти > перед завершение дочерних процессов. Эти значение представлены ниже для > разного количество рабочих процессов (0 - это когда без fork, все работа в > главном идет). > > > LWP Curl AnyEvent::HTTP > FreeBSD Linix FreeBSD Linix FreeBSD Linix > 0 15 17 20 17 38 20 > 1 23 26 35 20 47 25 > 2 33 38 50 25 62 33 > 3 43 51 64 30 80 40 > 4 53 65 76 34 93 47 > 5 61 78 84 37 109 55 > 6 67 89 98 42 119 62 > 7 75 103 105 45 126 69 > 8 85 116 115 50 146 76 > 9 93 126 122 52 153 83 > 10 103 136 130 57 166 91 > > Удивило сравнение с Linux. > > Как можно это объяснить и что можно подкрутить? > > > P.S. OS обе 32 под KVM. Размер страниц одинаков. > > FreeBSD 9.3 > Perl v5.18.4 > curl 7.39.0, Features: AsynchDNS IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB > SSL libz > > linux 3.16 > Perl v5.14.2 > curl 7.33.0 Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB > SSL libz TLS-SRP > > Грешил на версию perl, но потом и на Linux использовал Perl v5.18.4. Цифры > увеличились, но в целом картина не поменялась: > > Linux > Perl v5.14.2 Perl v5.18.4 > Curl 6 6 43 46 > AE 6 6 63 71 > > (6 6 - это 6 fork, в каждом из которых по 6 IO) >
