Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
JAVASCRIPT:
from Back-end to Front-end
PROFESSIONAL JS CONFERENCE
PROFESSIONAL JS CONFERENCE 5-6 APRIL ‘19 KIEV, UKRAINE
Artur Torosian
V8 - view on asynchrony and working
with the OS from...
-V8
-Event Loop
-libUV
-Threads
GOOGLE V8
EVENT LOOP
Event queue
Stuff to do
Stuff to do
Stuff to do
API
Stuff to do
Stuff to do
Stuff to do
Black boxEvent queue
Stuff to do
Stuff to do
Stuff to do
Stuff to do
Stuff to do
Stuff to do
API
Event Loop
Stuff to do
Event queue
Stuff to do
Stuff to do
Stuff to doStuff to do
Stuff to do
Stuff to do
API
Black box
Event Loop
Stuff to do
Event queue
Stuff to do
Stuff to do
Stuff to doStuff to do
Stuff to do
Stuff to do
API
Callback que...
Event Loop
Stuff to do
Event queue
Stuff to do
Stuff to do
Stuff to doStuff to do
Stuff to do
Stuff to do
API
Callback que...
Event Loop
Stuff to do
Event queue
Stuff to do
Stuff to do
Stuff to doStuff to do
Stuff to do
Stuff to do
API
Callback que...
Event Loop
Stuff to do
Event queue
Stuff to do
Stuff to do
Stuff to do
Stuff to do
Stuff to doStuff to do
API
Callback que...
Black box
LIBUV
(aka Unicorn Velociraptor Library)
Black box
ufftodo
Stufftodo
Stuffto
do
Stufftodo
Stuffto
do
Stufftodo
Stuffto
do
Stufftodo
Stuffto
do
Stufftodo
Stuffto
do
Stufftodo...
- fs
- crypto
- DNS
- Zlib
Javascript
Javascript
Main Thread
C++
object code
Javascript
Main Thread
C++
object code
Stuff to do
Threadpool
Threadpool
Javascript
Main Thread
C++
object code
Stuff to do
Return to JS
Stuff to do is
processing
Stuff is done
Threadpool
Javascript
Main Thread
C++
object code
Stuff to do
Return to JS
Stuff is doneStuff is wrapping
Callback
Javascript
Threadpool
Javascript
Main Thread
C++
Return to JS
Stuff to do is
processing
Stuff is done
object code
Stuff to do
Callbac...
Group 1:
Hashes 0 - 3
Time: <800
Group 2:
Hashes 4 - 7
Time: <1600
Group 3:
Hashes 8 - 9
Time: <2400
Group 1:
Hashes 0 - 7
Time: <1200
Group 2:
Hashes 8-9
Time: <2000
Network
RequestRequest
Request
Request
Request
Request
Request
Request
Request
Request
- Node.js v0.8
- Ubuntu 12.04 LTS
- Intel C...
RequestRequest
Request
Request
Request
Request
Request
Request
Request
Request
- Node.js v0.8
- Ubuntu 12.04 LTS
- Intel C...
https://habr.com/ru/post/123154
Crossplatform
- child_process
- cluster
- fs
Worker threads
Node.js
5 threads
V8
4 threads
Event
Loop
1 thread
10 threads
Thread
pool
Node.js
5 threads
V8
4 threads
Event
Loop
1 thread
6 threads
Thread
pool
Cluster
Node.js
V8
Event
Loop
Thread
pool
New process will create their own V8
instance, Event Loop and Thread pool.
Huge memory usage.
Cluster
Threadpool
Node.js
V8
Event
Loop
Thread
pool
Only for IO - plugins and fs, crypto,
dns and zlib modules.
Threadpool
Worker threads
Node.js
V8
Event
Loop
Thread
pool
Worker threads
Memory, performance and stuff like
that.
Do not help with async tasks, helps
only with blocking operations.
Javascript
Main Thread
C++
Threadpool
Node
Javascript
Main Thread
C++
Threadpool
Node
Javascript
Main Thread
C++
Threadpool
Node
Javascript
Main Thread
C++
Threadpoo...
Javascript
Main Thread
C++
Threadpool
Node
Javascript
Main Thread
C++
Threadpool
Node
Javascript
Main Thread
C++Worker 1 Worker 2
Node
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри
Upcoming SlideShare
Loading in …5
×

of

JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 1 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 2 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 3 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 4 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 5 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 6 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 7 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 8 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 9 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 10 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 11 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 12 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 13 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 14 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 15 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 16 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 17 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 18 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 19 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 20 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 21 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 22 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 23 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 24 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 25 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 26 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 27 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 28 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 29 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 30 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 31 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 32 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 33 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 34 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 35 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 36 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 37 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 38 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 39 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 40 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 41 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 42 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 43 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 44 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 45 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 46 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 47 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 48 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 49 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 50 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 51 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 52 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 53 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 54 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 55 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 56 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 57 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 58 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 59 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 60 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 61 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 62 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 63 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 64 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 65 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 66 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 67 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 68 JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри Slide 69
Upcoming SlideShare
What to Upload to SlideShare
Next

0 Likes

Share

JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри

Асинхронность, тредпул и воркеры: ныряем в libUV и V8, добираемся до ОС и пытаемся разобраться в тонкостях Event Loop в главном треде и в воркерах.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

JS Fest 2019. Артур Торосян. V8 - взгляд на асинхронность и работу с ОС изнутри

  1. 1. JAVASCRIPT: from Back-end to Front-end PROFESSIONAL JS CONFERENCE
  2. 2. PROFESSIONAL JS CONFERENCE 5-6 APRIL ‘19 KIEV, UKRAINE Artur Torosian V8 - view on asynchrony and working with the OS from the inside
  3. 3. -V8 -Event Loop -libUV -Threads
  4. 4. GOOGLE V8
  5. 5. EVENT LOOP
  6. 6. Event queue Stuff to do Stuff to do Stuff to do API Stuff to do Stuff to do Stuff to do
  7. 7. Black boxEvent queue Stuff to do Stuff to do Stuff to do Stuff to do Stuff to do Stuff to do API
  8. 8. Event Loop Stuff to do Event queue Stuff to do Stuff to do Stuff to doStuff to do Stuff to do Stuff to do API Black box
  9. 9. Event Loop Stuff to do Event queue Stuff to do Stuff to do Stuff to doStuff to do Stuff to do Stuff to do API Callback queue Black box
  10. 10. Event Loop Stuff to do Event queue Stuff to do Stuff to do Stuff to doStuff to do Stuff to do Stuff to do API Callback queue Callback Black box CallbackCallback Callback CallbackCallback
  11. 11. Event Loop Stuff to do Event queue Stuff to do Stuff to do Stuff to doStuff to do Stuff to do Stuff to do API Callback queue Callback Black box CallbackCallback Callback CallbackCallback
  12. 12. Event Loop Stuff to do Event queue Stuff to do Stuff to do Stuff to do Stuff to do Stuff to doStuff to do API Callback queue Callback Black box CallbackCallback Callback Callback Callback Stuff to do Stuff to do
  13. 13. Black box LIBUV (aka Unicorn Velociraptor Library)
  14. 14. Black box
  15. 15. ufftodo Stufftodo Stuffto do Stufftodo Stuffto do Stufftodo Stuffto do Stufftodo Stuffto do Stufftodo Stuffto do Stufftodo Stuffto Stuffto Stuffto do tufftodo Thread Pool
  16. 16. - fs - crypto - DNS - Zlib
  17. 17. Javascript
  18. 18. Javascript Main Thread C++ object code
  19. 19. Javascript Main Thread C++ object code Stuff to do Threadpool
  20. 20. Threadpool Javascript Main Thread C++ object code Stuff to do Return to JS Stuff to do is processing Stuff is done
  21. 21. Threadpool Javascript Main Thread C++ object code Stuff to do Return to JS Stuff is doneStuff is wrapping Callback
  22. 22. Javascript
  23. 23. Threadpool Javascript Main Thread C++ Return to JS Stuff to do is processing Stuff is done object code Stuff to do Callback Stuff is wrapping
  24. 24. Group 1: Hashes 0 - 3 Time: <800 Group 2: Hashes 4 - 7 Time: <1600 Group 3: Hashes 8 - 9 Time: <2400
  25. 25. Group 1: Hashes 0 - 7 Time: <1200 Group 2: Hashes 8-9 Time: <2000
  26. 26. Network
  27. 27. RequestRequest Request Request Request Request Request Request Request Request - Node.js v0.8 - Ubuntu 12.04 LTS - Intel Core i7-2600 Quad - 16gb RAM
  28. 28. RequestRequest Request Request Request Request Request Request Request Request - Node.js v0.8 - Ubuntu 12.04 LTS - Intel Core i7-2600 Quad - 16gb RAM Successful handling of 1M requests
  29. 29. https://habr.com/ru/post/123154
  30. 30. Crossplatform
  31. 31. - child_process - cluster - fs
  32. 32. Worker threads
  33. 33. Node.js 5 threads V8 4 threads Event Loop 1 thread 10 threads Thread pool
  34. 34. Node.js 5 threads V8 4 threads Event Loop 1 thread 6 threads Thread pool
  35. 35. Cluster Node.js V8 Event Loop Thread pool
  36. 36. New process will create their own V8 instance, Event Loop and Thread pool. Huge memory usage. Cluster
  37. 37. Threadpool Node.js V8 Event Loop Thread pool
  38. 38. Only for IO - plugins and fs, crypto, dns and zlib modules. Threadpool
  39. 39. Worker threads Node.js V8 Event Loop Thread pool
  40. 40. Worker threads Memory, performance and stuff like that. Do not help with async tasks, helps only with blocking operations.
  41. 41. Javascript Main Thread C++ Threadpool Node
  42. 42. Javascript Main Thread C++ Threadpool Node Javascript Main Thread C++ Threadpool Node Javascript Main Thread C++ Threadpool Node
  43. 43. Javascript Main Thread C++ Threadpool Node
  44. 44. Javascript Main Thread C++ Threadpool Node
  45. 45. Javascript Main Thread C++Worker 1 Worker 2 Node

Асинхронность, тредпул и воркеры: ныряем в libUV и V8, добираемся до ОС и пытаемся разобраться в тонкостях Event Loop в главном треде и в воркерах.

Views

Total views

290

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×