Разработчики Mozilla работают над реализацией многопоточного рендеринга web-страниц

отметили
31
человек
в архиве
Разработчики Mozilla работают над реализацией многопоточного рендеринга web-страниц
На конференции O'Reilly Velocity в выступлении представителя проекта Mozilla была озвучена идея создания механизма многопоточной обработки DOM-дерева, что позволит ускорить отображение отдельных web-страниц за счет того, что в процессе обработки одной web-страницы будут задействованы несколько процессорных ядер. Данный проект пока находится на ранней стадии развития и базируется на использовании разрабатываемого в недрах Mozilla языка программирования Rust, ориентированного на параллелизм и безопасность.

Грейдон Хоаре (Graydon Hoare), автор языка Rust, в настоящее время работает в Mozilla и по словам докладчика занимается развитием языка Rust в режиме полного рабочего дня. По структуре язык напоминает C++, но позволяет формировать задачи в виде легковесных сопрограмм и способен порождать тысячи и даже миллионы подпроцессов. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от возникающих из-за низкоуровневой работой с памятью проблем, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п.

В настоящее время браузеры пытаются задействовать более полное использование имеющихся процессорных ресурсов за счет обеспечения распараллеливания таких действий, как обработка вкладок, выполнение плагинов, отправка http-запросов, декодирование видео и обеспечение работы интерфейса браузера отдельно от кода рендеринга страниц. В вышеупомянутых случаях отдельные функции выносятся в отдельные процессы, которые могут функционировать параллельно. В случае WebGL обеспечение параллельности возможно за счет привлечения GPU.

При обработке одной страницы все ещё используются однопоточные схемы, что мешает использованию потенциала современных многоядерных CPU. Однопоточным остается связанный с DOM (Document Object Model) внутренний API, а также функции формирования содержимого окна, парсинга HTML и выполнения JavaScript, в контексте одной страницы. С ростом размера современных web-приложений и превращения браузера в платформу для выполнения web-приложений, однопоточная обработка одной страницы становится узким местом в производительности браузера.

В качестве выхода разработчики Mozilla пытаются переработать связанный с обработкой дерева DOM код, используя язык Rust. Основная идея заключается в том, чтобы разбить код DOM и рендеринга на более мелкие подзадачи, которые смогут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. К сожалению, готового прототипа кода ещё не существует, определенных планов по внедрению данного проекта тоже пока нет — в настоящее время проект носит исследовательский характер.
Добавил manny21 manny21 19 Июня 2011
проблема (3)
Количество процессорных ядер на вашем компьютере?
X86 2 (7)
Technician 4 (6)
syschel 1 (2)
NoMagisterium ~π (1)
nuclear-zomby.livejournal.com 8 (1)
Shura.Fe чего? каких ядер?? (1)
Комментарии участников:
NoMagisterium
+1
NoMagisterium, 19 Июня 2011 , url
Use GPU, Luke!
X86
0
X86, 19 Июня 2011 , url
имхо, через какое-то время не будет никаких GPU отдельно от CPU.
ch3
+1
ch3, 19 Июня 2011 , url
CPU уперлось в кучу стенок сразу: ILP wall, Memory Wall и Power Wall.
В схватке CPU vs GPU ставлю на последнее.
d41d8cd98f00b2
0
d41d8cd98f00b2, 19 Июня 2011 , url
Вы когда-нибудь на OpenCL писали? Вижу, что нет. На GPU ограничений ещё больше, ибо числодробилка.
ch3
0
ch3, 19 Июня 2011 , url
Писал на CUDA, но это не важно. Перечислены были фундаментальные тупики, из-за которых сильно ускориться старым добрым процессорам уже не получится. Писать код под GPU сомнительное удовольствие, но там есть перспективы роста производительности, хотя бы по тупым флопсам.


Войдите или станьте участником, чтобы комментировать