Re: Spinning the busy indicator
Re: Spinning the busy indicator
- Subject: Re: Spinning the busy indicator
- From: Steve Mills <email@hidden>
- Date: Fri, 01 May 2015 00:02:26 -0500
On Apr 30, 2015, at 23:46:53, Graham Cox <email@hidden> wrote:
>
> Well, here’s a huge clue.
>
> I use NSOperationQueue with the default -maxConcurrentOperationCount which is NSOperationQueueDefaultMaxConcurrentOperationCount, i.e. let the system figure it out. That appears to create 4 threads for my particular machine, which has a Core i3 (2 cores) CPU. My peak CPU usage is reported as 418%. I’m not sure how it achieves that from a dual core CPU, but one would assume that Apple know what they’re doing [/irony].
>
> So, I tried setting that NSOperationQueue property directly to something less, and lo-and-behold, the problem goes away with a limit of 3 or less. A limit of 4 produces the same problem.
>
> This appears to suggest that if you let NSOperationQueue take all of the CPU resources, the main thread is left high and dry if it needs to create another thread, e.g. for an XPC call. Maybe this is intentional, but it’s a bloody nuisance - surely a better outcome for the “let the system figure it out” would be to say “whatever the max is -1”, so it leaves some capacity in hand for the main thread. The way it works now might give slightly better performance overall, but it causes an app to hang unresponsively for some indeterminate period in some cases. Of course I can set the limit to 3 myself, but if I found myself on a 16 core machine, that's very suboptimal.
>
> I’m tempted to report this as a bug, but I’d like to hear what others think about this first.
I’ve run into this too, where letting the OS figure out how many operations to queue at once doesn’t always work like a human wants it to work. I ended up doing what you did - leave one for the main thread. NSOperationQueueDefaultMaxConcurrentOperationCount really isn’t smart enough, or they need to add another constant NSOperationQueueDefaultMaxConcurrentButDontBeAJerkOperationCount.
--
Steve Mills
Drummer, Mac geek
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden