[webkit-dev] support for navigator.cores or navigator.hardwareConcurrency

Filip Pizlo fpizlo at apple.com
Mon May 5 22:32:03 PDT 2014


+1, I agree with all that you say. 

I think that having more sophisticated forms of concurrency than just workers would eventually be great. But every time I've written parallel code, no matter what programming model I used (threads, processes, tasks, whatever...) I always end up wanting the number of logical CPUs.

-Filip

> On May 5, 2014, at 8:02 PM, Rik Cabanier <cabanier at gmail.com> wrote:
> 
> 
> 
> 
>> On Mon, May 5, 2014 at 6:23 PM, Oliver Hunt <oliver at apple.com> wrote:
>> 
>>> On May 5, 2014, at 6:13 PM, Rik Cabanier <cabanier at gmail.com> wrote:
>>>  
>>>> Do you really want a page to know that you have a  fancy-pants 24-core Mac Pro rather than a little Mac mini?
>>> 
>>> Yes!
>>> If I have 24 cores ready to do work and the page can put them to use, I would like it to do so.
>>> At the same time, if I just have a old mac mini, I don't want the page to launch 24 workers as that will exhaust my memory and cause contention. 
>> 
>> But I don't have 24 cores available, i have 24 cores installed.  You have no idea what the actual workload of the system is, you don't know whether any other tabs are also using workers, you only have one piece of information, and that is nowhere near sufficient to make a reasonable choice.
> 
> Sure, if I have 2 tabs and each one consumes all my CPU resources, things will run at half the speed and maybe even worse because of we would use more memory.
> How often would that happen though? Even if it did, would it be surprising to the user that things are slower?
>  
>> A better solution would be to have a WorkerSet API where the browser is able to make a sensible choice given the current system, system load, power source, etc, etc
> 
> I'm unconvinced that this is something that authors actually want and also sounds more complex than needed.
> That being said, this is a problem that could be solved in parallel.
> Nothing in web workers is stopping a browser to implement this underneath web workers.
>  
>> Generating workloads on the basis of # of installed cores has be attempted on every environment and it almost always leads to incorrect choices being made.
> 
> I don't think that is true. I know several Adobe applications and libraries that look at the number of CPU's to divide up the workload.
> Long time ago, I wrote an application that compressed image data over all available CPUs and it was not that hard to optimize this.
> 
>>>>> On May 5, 2014, at 4:58 PM, Filip Pizlo <fpizlo at apple.com> wrote:
>>>>> 
>>>>> I like this.  Personally, I don't see any downside.
>>>>> 
>>>>> Is there a bug (on bugs.webkit.org), and if not, can you create one? :-)
>>>>> 
>>>>> -Phil
>>>>> 
>>>>> 
>>>>>> On May 5, 2014 at 4:49:35 PM, Rik Cabanier (cabanier at gmail.com) wrote:
>>>>>> 
>>>>>> All,
>>>>>> 
>>>>>> there's a thread on blink-dev [1] and whatwg [2] to create a new parameter on the navigator object that returns the maximum number of tasks that can run in parallel. [3]
>>>>>> 
>>>>>> Is this something that WebKit would support?
>>>>>> 
>>>>>> 1: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/B6pQClqfCp4
>>>>>> 2: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2014-May/254200.html
>>>>>> 3: http://wiki.whatwg.org/wiki/NavigatorCores
>>> 
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev at lists.webkit.org
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20140505/784e639c/attachment.html>


More information about the webkit-dev mailing list