Size: a a a

2020 May 11

VS

V7v S6k in Frontend UA
Eugene Obrezkov
Ну, выносить эту логику на уровень докера и спаунить нужное количество контейнеров
і це буде менше по пам'яті?
источник

AN

Anton Nemtsev in Frontend UA
Andrey Listochkin
Про язык написали, я скажу по существу.

Форк процесса копирует пямять в режиме Copy-On-Write. Если ты запустил ноду, загрузил код подо все модули, а только потом форкнул, то для кода модулей в памяти будет держаться общий блок памяти. Только новые данные, которые будут в разных процессах создаваться / изменяться, будут копироваться операционкой. Т.е. логически это правда отдельные процессы со своими V8 и прочим, но физически жирный кусок этого всего будет в памяти существовать в одном экземпляре.

Второе. child process - не едиственный способ сделать параллельное выполнение кода в ноде. Так. же как в браузере есть Web Workers, в ноде есть такое же апи для параллельных потоков
Cпасибо большое.
А в чем будет нюанс с потоками? Это разве не то же самое?
источник

EO

Eugene Obrezkov in Frontend UA
V7v S6k
і це буде менше по пам'яті?
Это будет меньше головной боли в первую очередь
источник

EO

Eugene Obrezkov in Frontend UA
А все вопросы памяти в сравнении этих сценариев - это спички, имхо
источник

AL

Andrey Listochkin in Frontend UA
V7v S6k
Copy-On-Write прямо на рівні ОС зроблено?
Да, еще с 70х-80х годов
источник

AL

Andrey Listochkin in Frontend UA
Anton Nemtsev
Cпасибо большое.
А в чем будет нюанс с потоками? Это разве не то же самое?
Не совсем. Потоки выполняются параллельно, но в одной общей V8. Можно дешево слать данные между ними. Между процессами данные придется всегда копировать.
источник

AN

Anton Nemtsev in Frontend UA
Eugene Obrezkov
Ну, выносить эту логику на уровень докера и спаунить нужное количество контейнеров
У меня надо обработать в несколько потоков кучу урлов и потом все данные объеденить и постобработать.
Мне кажется это будет очень уж монструозно, если использовать именно разные контейнеры.
Но я, вообще, рассказываю, что выгода там от расспаралеливания сомнительна, так что такое…
источник

AN

Anton Nemtsev in Frontend UA
Andrey Listochkin
Не совсем. Потоки выполняются параллельно, но в одной общей V8. Можно дешево слать данные между ними. Между процессами данные придется всегда копировать.
а они используют одно ядро или каждый своё?
источник

AL

Andrey Listochkin in Frontend UA
каждый свое
источник

AN

Anton Nemtsev in Frontend UA
И воркеры — каждый своё?
источник

AL

Andrey Listochkin in Frontend UA
И процессы, и потоки видны Операционной Системе, и она решает, как располагать их по ядрам
источник

AL

Andrey Listochkin in Frontend UA
Anton Nemtsev
И воркеры — каждый своё?
Да
источник

EO

Eugene Obrezkov in Frontend UA
Anton Nemtsev
У меня надо обработать в несколько потоков кучу урлов и потом все данные объеденить и постобработать.
Мне кажется это будет очень уж монструозно, если использовать именно разные контейнеры.
Но я, вообще, рассказываю, что выгода там от расспаралеливания сомнительна, так что такое…
Для этого случая - да. Тогда те же worker threads можно взять, ну или cluster. Я сомневаюсь что тут важна производительность, так что бери что удобнее и понятнее)
источник

EO

Eugene Obrezkov in Frontend UA
Просто звучит как какойто предагрегатор без рамок по времени
источник

AN

Anton Nemtsev in Frontend UA
Andrey Listochkin
И процессы, и потоки видны Операционной Системе, и она решает, как располагать их по ядрам
Счел бы ты безграмотным (и завернул) использование кластера, если бы кто то прислал тебе код с ним?
Или это приемлемо + в качестве альтернативного решения указать воркеры?
источник

EO

Eugene Obrezkov in Frontend UA
По поводу copy on write я бы проконсультировался с документацией Ноды сначала
источник

AL

Andrey Listochkin in Frontend UA
Anton Nemtsev
Счел бы ты безграмотным (и завернул) использование кластера, если бы кто то прислал тебе код с ним?
Или это приемлемо + в качестве альтернативного решения указать воркеры?
Не счел бы. Это удобно, и используется на практике много где.
источник

AN

Anton Nemtsev in Frontend UA
Eugene Obrezkov
Для этого случая - да. Тогда те же worker threads можно взять, ну или cluster. Я сомневаюсь что тут важна производительность, так что бери что удобнее и понятнее)
Ну вообще задача распараллеливания — сделать быстрее и сделать больше итераций, что бы повысить точность.
источник

AN

Anton Nemtsev in Frontend UA
Andrey Listochkin
Не счел бы. Это удобно, и используется на практике много где.
Спасибо. Мне очень важно твоё мнение по этому поводу.
источник

AN

Anton Nemtsev in Frontend UA
(Если бы сказал что счел … переписывал бы вероятно)
источник