From kde-core-devel Mon Aug 17 13:16:19 2009 From: "Dawit A." Date: Mon, 17 Aug 2009 13:16:19 +0000 To: kde-core-devel Subject: Re: Patch KIO::AccessManager Message-Id: <200908170916.19776.adawit () kde ! org> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=125051502121764 On Monday 17 August 2009 04:09:53 Thiago Macieira wrote: > Em Domingo 16 Agosto 2009, ās 14:31:01, Dawit A. escreveu: > > The attached patch changes KIO::AccessManager to schedule all the job > > requests it receives to prevent the explosion of kio_http process that > > can get spawned when many requests are made by an application all at > > once, e.g. rendering any moderately complex site. > > > > You can easily see this by using the webkitpart in Konqueror and visiting > > any moderately complex site. For example, before the patch visiting > > qt.nokia.com/developer spawns 21 kio_http processes where as only 2 are > > spawned with the patch. Actually the scheduler always seems to spawn only > > 2 processes per site. > > That's how it should be. I'm wondering why the explicitly scheduling is > necessary. > > Shouldn't all jobs be scheduled by default in KIO? Well KIO::Scheduler does schedule all jobs. However, it provides 3 different scheduling modes. The default mode, Direct, will not control how many jobs gets to be spawned. Rather it simply assumes the application will manage its requests appropriately and simply recycle an existing job if it can be reused to fulfill the request or create a new one. That however means that it does not cope very well, from the prespective ioslave spawning, when an application creates too many jobs in a short time span... I guess the default choice assumes that most developers do not have a need to do that... In face the scheduler documentation explicitly states for devlopers to use the scheduled mode if they create many jobs and do not want to have an ioslave for each job.