- From: Mike Wilson <mikewse@hotmail.com>
- Date: Thu, 10 Jun 2010 12:42:05 +0200
- To: "'Ennals, Robert'" <robert.ennals@intel.com>, <public-webapps@w3.org>
Hi Robert, I think using the term "execution context" here is not really advisable, as a JS call stack will contain a new execution context for every function call level. Thus, a property named maxExecutionContexts might as well be interpreted as the maximum call stack depth in a single worker. See chapter 10 and f ex 13.2.1 of: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf It might be better off to play on "hardware" terms like CPU, Execution Unit, etc? Best regards Mike Wilson Ennals, Robert wrote: > The natural place to put this attribute seems to be on the > navigator object. > This property should be made available on both the main page > and within a web > worker. > > For example, one way this property could be defined would be > with the following > WebIDL: > > [Supplemental, NoInterfaceObject] > interface NavigatorWorkerInfo { > readonly attribute int maxExecutionContexts; > } > > Navigator implements NavigatorWorkerInfo; > WorkerNavigator implements NavigatorWorkerInfo; > > > -Rob > > > -----Original Message----- > > From: public-webapps-request@w3.org [mailto:public-webapps- > > request@w3.org] On Behalf Of bugzilla@jessica.w3.org > > Sent: Friday, May 28, 2010 4:09 PM > > To: public-webapps@w3.org > > Subject: [Bug 9823] New: Add "maxExecutionContexts" property with > > number of hardware execution contexts > > > > http://www.w3.org/Bugs/Public/show_bug.cgi?id=9823 > > > > Summary: Add "maxExecutionContexts" property > with number of > > hardware execution contexts > > Product: WebAppsWG > > Version: unspecified > > Platform: PC > > OS/Version: Windows XP > > Status: NEW > > Severity: normal > > Priority: P2 > > Component: Web Workers (editor: Ian Hickson) > > AssignedTo: ian@hixie.ch > > ReportedBy: robert.ennals@intel.com > > QAContact: member-webapi-cvs@w3.org > > CC: mike@w3.org, public-webapps@w3.org > > > > > > It is likely that people will want to use the Web Workers API for > > creating > > multiple threads to perform some kind of CPU-bound computation more > > efficiently > > than they could with a single thread. In particular, Section 1.2.6 > > (Delegation) > > talks about splitting a task across multiple workers in > order to gain > > performance. In this particular example, the number of workers is > > fixed at 10, > > but this is likely to be the wrong number in most cases. > > > > Right now, the spec gives no guidance to developers about how many > > workers they > > should use for compute-bound jobs. In the absence of such > information, > > it seems > > likely that developers will do something ugly like choose a fixed > > number that > > seemed to work well on the device they tested on, attempt > to identify > > which of > > a finite number of known devices the app is running on > using user-agent > > sniffing, or just create far more workers than needed in > the hope that > > the user > > agent will deal with the problem. > > > > I suggest we just add a simple "maxExecutionContexts" property with > > descriptive > > text like: > > "This value is the maximum number of hardware execution > contexts that > > may be > > available to applications running in the User Agent. Other > activity in > > the > > User Agent or on the system may be using these resources at any time > > (including > > during or after the request for information is made). It is not the > > number of > > free, unused resources. User Agents may exclude dedicated processors > > that they > > know are not available for applications or may choose to set thread > > priorities > > low for applications that overuse system resources by > starting too many > > WebWorkers on a busy system." > > > > "maxExecutionContexts" is not an "optimal" or "recommended" > number of > > workers > > to create. If another app is using some of the cores, then > the optimal > > number > > of cores may be lower. If your workers are often IO bound, then the > > optimal > > number of cores may be higher. Similarly if > worker-communication costs > > are > > significant, it may not be useful to use all available cores. > > > > "maxExecutionContexts" is however a number that can be useful for an > > app that > > wants to choose an appropriate number of workers to create. At the > > simplest > > level, the fact that maxExecutionContexts is greater than 1 tells an > > app that > > it may be able to gain some performance from some level of > parallelism, > > and the > > fact that maxExecutionContexts is a large number may > indicate that it > > is wise > > for the app to split its work into finer-grain chunks than if it was > > smaller. > > > > It is up to an individual developer to determine how the number of > > workers they > > create corresponds to "maxExecutionContexts"; however it is > likely that > > the > > availability of this number will help them make better > decisions than > > they > > would if this information was not available. > > > > > > -Rob > > > > -- > > Configure bugmail: > > http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email > > ------- You are receiving this mail because: ------- > > You are on the CC list for the bug. > >
Received on Thursday, 10 June 2010 10:43:11 UTC