Quantum DOM调度的优先级处理 ***

访客5年前黑客资讯593

运用多标签阅读变得越来越遍及,因为人们在Facebook,Twitter,YouTube,Netflix和Google Docs等服务上花费的时刻越来越多,乃至现已成为人们日常日子中的一部分。
Quantum DOM:调度是Project Quantum的一个重要功用,其重点是使Firefox操作愈加便利,特别是当许多选项卡翻开时。在本文中,我将描述在多标签阅读中呈现的问题,并找到对应的处理方案以及Quantum DOM在其间所起的效果。
问题1:不同类别的使命优先级排序
因为多处理器Firefox(e10s)在Firefox 48版别中被初次启用,因而Web内容选项卡现在能够在独自的内容进程中运转,以削减给定进程中操作体系资源的拥堵。但是,经过深化的研讨,我发现内容进程中主线程的使命行列依然拥堵了多个使命。内容进程中的使命或许有许多或许的来历,比方,经过IPC(进程间通讯)从主进程(例如输入事情, *** 数据和vsync)直接进入网页(例如从setTimeout,requestIdleCallback或postMessage),或内容进程内部(例如垃圾搜集或遥测使命)。为了更好的呼应,我现已学会了为requestIdleCallback和垃圾搜集优先处理用户输入和vsync上的使命。
问题2:选项卡之间短少使命优先级
在Firefox内部,在前台和后台选项卡中运转的使命在单个使命行列中以先到先得的次序履行。将前台使命优先于后台使命是比较合理的,以进步Firefox用户的用户体会呼应才能。
处理方案
来看看我是怎么处理这两个组织的应战的,我会将它们分红一系列导致可完结方针的举动:
1.在类别和标签组的内容进程的主线程上分类和优先处理使命,以供给更好的呼应。
2.假如此抢占对用户的运转功率不明显,则抢占运转后台选项卡的使命。
3.因为资源有限,供给了更少的内容进程可供e10s multi挑选。
使命分类

为了处理咱们的之一个问题,咱们将内容进程中主线程的使命行列划分为3个优先级排队:高(用户输入和改写驱动程序),正常(DOM事情, *** ,TimerCallback,WorkerMessage)和低(垃圾搜集,IdleCallback)。留意:优先级相同的使命次序坚持不变。
使命分组
在描述第二个问题的处理方案之前,让咱们将TabGroup界说为一组经过window.opener和window.parent相关的翻开的选项卡。在HTML规范中,这称为相关阅读环境的单位。因为使命是孤立的,假如它们归于不同的TabGroups,则不能相互影响。使命分组保证来自同一TabGroup的使命按次序运转,一起答应我从布景TabGroups(background TabGroups)中止使命,以便从前台TabGroup运转使命。
在Firefox内部结构中,每个窗口或文档都包含对它所属的TabGroup方针的引证,它供给了一组有用的调度API。这些API使Firefox开发人员更轻松的将使命与特定的TabGroup相相关。
怎么将使命分组到Firefox中
以下我会经过几个示例来展现怎么在Firefox中的各种类别中分组使命:
1.在window.postMessage()的完结中,一个名为PostMessageEvent的异步使命将被分派到主线程的使命行列中:

跟着DOM窗口与TabGroup的新相关以及TabGroup中供给的新调度API,我现在能够将此使命与恰当的TabGroup相相关并指定TaskCategory:

2.除了能够与TabGroup相相关的使命之外,内容过程中还有几种使命,如经过垃圾搜集进行遥测数据搜集和资源管理,与任何Web内容无关,下图便是垃圾搜集开端的办法

要使分组没有TabGroup依靠项的使命,引入了一个名为SystemGroup的特别组。然后,能够修正PokeGC()办法,如下所示:

咱们现在已将此GCTimerFired使命分组到具有TaskCategory :: GC指定的SystemGroup,这答应调度程序中止使命以运转任何前台选项卡的使命。
3.在某些情况下,相同的使命能够经过特定的Web内容或具有内容进程中体系特权的内部Firefox脚本来恳求。当使命不绑定到任何窗口或文档时,我就必须决议SystemGroup是否适用于恳求。例如,在内容进程中完结DNSService时,能够供给可选的TabGroup-versioned事情方针,以便在解析DNS查询后进行成果回调。假如未供给可选事情方针,则将挑选TaskCategory :: Network中的SystemGroup事情方针。我会先假定恳求是从内部脚本或与任何窗口及文档无关的内部服务触发的。

TabGroup类别
一旦在调度程序中使命分组完结,咱们从数据会集分配一个每个选项卡组的协作线程,以便运用TabGroup中的使命。每个协作线程在任何安全点都能够经过 *** 中止由调度程序预先扫除。然后,主线程经过这些协作线程进行虚拟化。

在这种新的协作线程办法中,我会保证一次只能运转一个线程。这将分配更多的CPU运转时刻到前台TabGroup,而且还保证Firefox中的内部数据是正确的,其间包含许多服务,管理器和有意规划为单例方针的数据。

[1] [2]  黑客接单网

相关文章

安全黑客接单_黑客怎么找网站漏洞

18、monkey (↓ 5)正如咱们在上一篇文章中了解的那样,出于对主动内存办理安全性的考虑,开发人员更简单运用它,但也会增加一些开支。 但在某些状况下,这种主动内存办理或许会导致功能问题。 有AP...

黑客接单盗号_找网络黑客进入番禺交警大队网站

1.4 其他歹意安排3月履行指令SplashData估量有简直10%的用户至少运用过这25个弱暗码中的一个,有3%的用户运用过123456这个最弱暗码。 黑客接单盗号,找网络黑客进入番禺交警大队网站...

网络嗅探器,手机丢了找黑客,我有项目找黑客团队合作

下面咱们借助于东西sqlHelper来进行cookie注入,下载地址http://down.51cto.com/data/1881323。 3 if (!...

加密破解-qq黑客

default:僵尸网络在315晚会上,关于智能机器人打电话这部分大部分都是那些厂家在宣扬“运用客户广泛”“打电话多”等对咱们打扰比较多的东西,没有透露出更多的细节。 我以为是为了防止这种作业经过宣扬...

吾爱破解网官网

· 开发商 Arnau 发布了一个名为 CoffeeMiner 的PoC项目,证明进犯者能够在未经用户同一的情况下使用连接到公共 Wi-Fi 网络的设备进行加密钱银挖矿活动。 剖析发现123456和p...

根据Web方法的数据包捕获实践

抓包是运维的必备技术,许多网络毛病需求靠抓包来处理,如常见的ARP诈骗和播送风暴。别的还有一些网线或光纤触摸欠好的毛病,不抓包也很难剖析出来,例如两个公司之间互联,网线测验都没问题,但一直不通。经过抓...