From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757986Ab0GVHWs (ORCPT ); Thu, 22 Jul 2010 03:22:48 -0400 Received: from smtp.nokia.com ([192.100.105.134]:16941 "EHLO mgw-mx09.nokia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757956Ab0GVHWq (ORCPT ); Thu, 22 Jul 2010 03:22:46 -0400 From: To: , CC: , , Date: Thu, 22 Jul 2010 09:22:16 +0200 Subject: RE: [PATCHv2 11/11] writeback: prevent unnecessary bdi threads wakeups Thread-Topic: [PATCHv2 11/11] writeback: prevent unnecessary bdi threads wakeups Thread-Index: Acspatlqm8dzenbQT/eGlGW7RstI0QAAbYQg Message-ID: <1F18D6510CF0474A8C9500565A7E41A22D4D24C4C2@NOK-EUMSG-02.mgdnok.nokia.com> References: <1279704706-1267-1-git-send-email-dedekind1@gmail.com> <1279704706-1267-12-git-send-email-dedekind1@gmail.com> <20100722031922.GA3446@amd> <1279781304.3044.12.camel@localhost> In-Reply-To: <1279781304.3044.12.camel@localhost> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-OriginalArrivalTime: 22 Jul 2010 07:22:21.0492 (UTC) FILETIME=[9FD5C740:01CB296E] X-Nokia-AV: Clean Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id o6M7N6AO010148 >-----Original Message----- >From: Artem Bityutskiy [mailto:dedekind1@gmail.com] >Sent: 22 July, 2010 09:48 >To: Nick Piggin; Kristo Tero (Nokia-MS/Tampere) >Cc: Jens Axboe; linux-fsdevel@vger.kernel.org; linux- >kernel@vger.kernel.org >Subject: Re: [PATCHv2 11/11] writeback: prevent unnecessary bdi threads >wakeups > >Hi Nick, > >On Thu, 2010-07-22 at 13:19 +1000, Nick Piggin wrote: >> > out: >> > spin_unlock(&inode_lock); >> > + >> > + if (wakeup_bdi) { >> > + spin_lock(&bdi->wb_lock); >> > + if (!bdi->wb.task) >> > + wake_up_process(default_backing_dev_info.wb.task); >> > + else >> > + wake_up_process(bdi->wb.task); >> > + spin_unlock(&bdi->wb_lock); >> > + } >> > } >> >> We really want to wake up the bdi right away when first dirtying >> the inode? I haven't looked at where the state of the bdi code is >> now, but isn't it better to have a a delay there? > >Yes, I guess we want to wake up the bdi thread after 5 secs (assuming >default settings). I could implement a "wake_up_process_delayed" >function which would use a timer, but I think it is not necessary to >introduce these complications. We can just wake-up the bdi thread, it'll >find out there is nothing to do, and will go sleep for 5 secs. I think >this is good enough. > >IOW, delayed wake-up is not worth the trouble. > >> And rather than spreading details of how bdi tasks are managed >> would you consider putting this into its own function? > >Sure, will do. > >> Other than that, I like your patches. > >Thanks :-) > >> Out of interest, is 5 seconds >> very detremental to power usage? What is a reasonable goal for >> wakeups? (eg. 95%+ of possible efficiency) > >I cannot tell for sure. In Nokia N900 phone we use OMAP3 and we have >dynamic OFF-mode, so we switch off the CPU and peripherals completely >when there is nothing to do, and SDRAM stays in low-power auto-refresh >mode. Every useless wake-up makes us do a lot of job re-constructing the >CPU state. I cannot tell the numbers, but I'm CCing Tero, who is working >on OMAP3 PM and makes a lot of battery current measurements, he can >provide some numbers. Well, it is hard to give any good guidelines here, as it really depends on the device architecture, possible power saving modes etc., but I can give some sort of guestimate. Basically I think kernel should not generate any extra wakeups at all if it is not doing "anything too useful". In ideal world, everything should be interrupt driven as much as possible, and we would only have timers for things that are clearly visible for user, or can cause some sort of failure if neglected. Like if we ignore watchdogs, the device will reset itself. 5 seconds by itself is not that bad, the reason we want to get rid of these is that every single wakeup source cumulates. If we have 2 wakeups occurring at 5 second intervals and they are not synced, we effectively can wakeup every 2.5 seconds and so on. I guess a good target is to have 1 device level wakeup every 30 seconds or so, but due to cumulation, I tend to complain about anything that happens more often than once a minute. -Tero {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: RE: [PATCHv2 11/11] writeback: prevent unnecessary bdi threads wakeups Date: Thu, 22 Jul 2010 09:22:16 +0200 Message-ID: <1F18D6510CF0474A8C9500565A7E41A22D4D24C4C2@NOK-EUMSG-02.mgdnok.nokia.com> References: <1279704706-1267-1-git-send-email-dedekind1@gmail.com> <1279704706-1267-12-git-send-email-dedekind1@gmail.com> <20100722031922.GA3446@amd> <1279781304.3044.12.camel@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: , , To: , Return-path: In-Reply-To: <1279781304.3044.12.camel@localhost> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEFydGVtIEJpdHl1dHNraXkg W21haWx0bzpkZWRla2luZDFAZ21haWwuY29tXQ0KPlNlbnQ6IDIyIEp1bHksIDIwMTAgMDk6NDgN Cj5UbzogTmljayBQaWdnaW47IEtyaXN0byBUZXJvIChOb2tpYS1NUy9UYW1wZXJlKQ0KPkNjOiBK ZW5zIEF4Ym9lOyBsaW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtDQo+a2VybmVs QHZnZXIua2VybmVsLm9yZw0KPlN1YmplY3Q6IFJlOiBbUEFUQ0h2MiAxMS8xMV0gd3JpdGViYWNr OiBwcmV2ZW50IHVubmVjZXNzYXJ5IGJkaSB0aHJlYWRzDQo+d2FrZXVwcw0KPg0KPkhpIE5pY2ss DQo+DQo+T24gVGh1LCAyMDEwLTA3LTIyIGF0IDEzOjE5ICsxMDAwLCBOaWNrIFBpZ2dpbiB3cm90 ZToNCj4+ID4gIG91dDoNCj4+ID4gIAlzcGluX3VubG9jaygmaW5vZGVfbG9jayk7DQo+PiA+ICsN Cj4+ID4gKwlpZiAod2FrZXVwX2JkaSkgew0KPj4gPiArCQlzcGluX2xvY2soJmJkaS0+d2JfbG9j ayk7DQo+PiA+ICsJCWlmICghYmRpLT53Yi50YXNrKQ0KPj4gPiArCQkJd2FrZV91cF9wcm9jZXNz KGRlZmF1bHRfYmFja2luZ19kZXZfaW5mby53Yi50YXNrKTsNCj4+ID4gKwkJZWxzZQ0KPj4gPiAr CQkJd2FrZV91cF9wcm9jZXNzKGJkaS0+d2IudGFzayk7DQo+PiA+ICsJCXNwaW5fdW5sb2NrKCZi ZGktPndiX2xvY2spOw0KPj4gPiArCX0NCj4+ID4gIH0NCj4+DQo+PiBXZSByZWFsbHkgd2FudCB0 byB3YWtlIHVwIHRoZSBiZGkgcmlnaHQgYXdheSB3aGVuIGZpcnN0IGRpcnR5aW5nDQo+PiB0aGUg aW5vZGU/IEkgaGF2ZW4ndCBsb29rZWQgYXQgd2hlcmUgdGhlIHN0YXRlIG9mIHRoZSBiZGkgY29k ZSBpcw0KPj4gbm93LCBidXQgaXNuJ3QgaXQgYmV0dGVyIHRvIGhhdmUgYSBhIGRlbGF5IHRoZXJl Pw0KPg0KPlllcywgSSBndWVzcyB3ZSB3YW50IHRvIHdha2UgdXAgdGhlIGJkaSB0aHJlYWQgYWZ0 ZXIgNSBzZWNzIChhc3N1bWluZw0KPmRlZmF1bHQgc2V0dGluZ3MpLiBJIGNvdWxkIGltcGxlbWVu dCBhICJ3YWtlX3VwX3Byb2Nlc3NfZGVsYXllZCINCj5mdW5jdGlvbiB3aGljaCB3b3VsZCB1c2Ug YSB0aW1lciwgYnV0IEkgdGhpbmsgaXQgaXMgbm90IG5lY2Vzc2FyeSB0bw0KPmludHJvZHVjZSB0 aGVzZSBjb21wbGljYXRpb25zLiBXZSBjYW4ganVzdCB3YWtlLXVwIHRoZSBiZGkgdGhyZWFkLCBp dCdsbA0KPmZpbmQgb3V0IHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8sIGFuZCB3aWxsIGdvIHNsZWVw IGZvciA1IHNlY3MuIEkgdGhpbmsNCj50aGlzIGlzIGdvb2QgZW5vdWdoLg0KPg0KPklPVywgZGVs YXllZCB3YWtlLXVwIGlzIG5vdCB3b3J0aCB0aGUgdHJvdWJsZS4NCj4NCj4+IEFuZCByYXRoZXIg dGhhbiBzcHJlYWRpbmcgZGV0YWlscyBvZiBob3cgYmRpIHRhc2tzIGFyZSBtYW5hZ2VkDQo+PiB3 b3VsZCB5b3UgY29uc2lkZXIgcHV0dGluZyB0aGlzIGludG8gaXRzIG93biBmdW5jdGlvbj8NCj4N Cj5TdXJlLCB3aWxsIGRvLg0KPg0KPj4gT3RoZXIgdGhhbiB0aGF0LCBJIGxpa2UgeW91ciBwYXRj aGVzLg0KPg0KPlRoYW5rcyA6LSkNCj4NCj4+ICBPdXQgb2YgaW50ZXJlc3QsIGlzIDUgc2Vjb25k cw0KPj4gdmVyeSBkZXRyZW1lbnRhbCB0byBwb3dlciB1c2FnZT8gV2hhdCBpcyBhIHJlYXNvbmFi bGUgZ29hbCBmb3INCj4+IHdha2V1cHM/IChlZy4gOTUlKyBvZiBwb3NzaWJsZSBlZmZpY2llbmN5 KQ0KPg0KPkkgY2Fubm90IHRlbGwgZm9yIHN1cmUuIEluIE5va2lhIE45MDAgcGhvbmUgd2UgdXNl IE9NQVAzIGFuZCB3ZSBoYXZlDQo+ZHluYW1pYyBPRkYtbW9kZSwgc28gd2Ugc3dpdGNoIG9mZiB0 aGUgQ1BVIGFuZCBwZXJpcGhlcmFscyBjb21wbGV0ZWx5DQo+d2hlbiB0aGVyZSBpcyBub3RoaW5n IHRvIGRvLCBhbmQgU0RSQU0gc3RheXMgaW4gbG93LXBvd2VyIGF1dG8tcmVmcmVzaA0KPm1vZGUu IEV2ZXJ5IHVzZWxlc3Mgd2FrZS11cCBtYWtlcyB1cyBkbyBhIGxvdCBvZiBqb2IgcmUtY29uc3Ry dWN0aW5nIHRoZQ0KPkNQVSBzdGF0ZS4gSSBjYW5ub3QgdGVsbCB0aGUgbnVtYmVycywgYnV0IEkn bSBDQ2luZyBUZXJvLCB3aG8gaXMgd29ya2luZw0KPm9uIE9NQVAzIFBNIGFuZCBtYWtlcyBhIGxv dCBvZiBiYXR0ZXJ5IGN1cnJlbnQgbWVhc3VyZW1lbnRzLCBoZSBjYW4NCj5wcm92aWRlIHNvbWUg bnVtYmVycy4NCg0KV2VsbCwgaXQgaXMgaGFyZCB0byBnaXZlIGFueSBnb29kIGd1aWRlbGluZXMg aGVyZSwgYXMgaXQgcmVhbGx5IGRlcGVuZHMgb24gdGhlIGRldmljZSBhcmNoaXRlY3R1cmUsIHBv c3NpYmxlIHBvd2VyIHNhdmluZyBtb2RlcyBldGMuLCBidXQgSSBjYW4gZ2l2ZSBzb21lIHNvcnQg b2YgZ3Vlc3RpbWF0ZS4gQmFzaWNhbGx5IEkgdGhpbmsga2VybmVsIHNob3VsZCBub3QgZ2VuZXJh dGUgYW55IGV4dHJhIHdha2V1cHMgYXQgYWxsIGlmIGl0IGlzIG5vdCBkb2luZyAiYW55dGhpbmcg dG9vIHVzZWZ1bCIuIEluIGlkZWFsIHdvcmxkLCBldmVyeXRoaW5nIHNob3VsZCBiZSBpbnRlcnJ1 cHQgZHJpdmVuIGFzIG11Y2ggYXMgcG9zc2libGUsIGFuZCB3ZSB3b3VsZCBvbmx5IGhhdmUgdGlt ZXJzIGZvciB0aGluZ3MgdGhhdCBhcmUgY2xlYXJseSB2aXNpYmxlIGZvciB1c2VyLCBvciBjYW4g Y2F1c2Ugc29tZSBzb3J0IG9mIGZhaWx1cmUgaWYgbmVnbGVjdGVkLiBMaWtlIGlmIHdlIGlnbm9y ZSB3YXRjaGRvZ3MsIHRoZSBkZXZpY2Ugd2lsbCByZXNldCBpdHNlbGYuDQoNCjUgc2Vjb25kcyBi eSBpdHNlbGYgaXMgbm90IHRoYXQgYmFkLCB0aGUgcmVhc29uIHdlIHdhbnQgdG8gZ2V0IHJpZCBv ZiB0aGVzZSBpcyB0aGF0IGV2ZXJ5IHNpbmdsZSB3YWtldXAgc291cmNlIGN1bXVsYXRlcy4gSWYg d2UgaGF2ZSAyIHdha2V1cHMgb2NjdXJyaW5nIGF0IDUgc2Vjb25kIGludGVydmFscyBhbmQgdGhl eSBhcmUgbm90IHN5bmNlZCwgd2UgZWZmZWN0aXZlbHkgY2FuIHdha2V1cCBldmVyeSAyLjUgc2Vj b25kcyBhbmQgc28gb24uIEkgZ3Vlc3MgYSBnb29kIHRhcmdldCBpcyB0byBoYXZlIDEgZGV2aWNl IGxldmVsIHdha2V1cCBldmVyeSAzMCBzZWNvbmRzIG9yIHNvLCBidXQgZHVlIHRvIGN1bXVsYXRp b24sIEkgdGVuZCB0byBjb21wbGFpbiBhYm91dCBhbnl0aGluZyB0aGF0IGhhcHBlbnMgbW9yZSBv ZnRlbiB0aGFuIG9uY2UgYSBtaW51dGUuDQoNCi1UZXJvDQoNCg==