From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail6.bemta8.messagelabs.com (mail6.bemta8.messagelabs.com [216.82.243.55]) by kanga.kvack.org (Postfix) with ESMTP id 3995D6B016E for ; Sun, 7 Aug 2011 13:03:50 -0400 (EDT) From: =?utf-8?q?Rados=C5=82aw_Smogura?= Subject: Re: Hugepages for shm page cache (defrag) Date: Sun, 7 Aug 2011 19:03:49 +0200 References: <201107062131.01717.mail@smogura.eu> In-Reply-To: MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_1VsPOqak6u1u6d0" Message-Id: <201108071903.49700.mail@smogura.eu> Sender: owner-linux-mm@kvack.org List-ID: To: Andi Kleen Cc: linux-mm@kvack.org, Andrea Arcangeli , =?utf-8?q?Rados=C5=82aw_Smogura?= --Boundary-00=_1VsPOqak6u1u6d0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Andi Kleen Thursday 07 of July 2011 07:28:59 > Rados=C5=82aw Smogura writes: > > Hello, > >=20 > > This is may first try with Linux patch, so please do not blame me too > > much. Actually I started with small idea to add MAP_HUGTLB for /dev/shm > > but it grew up in something more like support for huge pages in page > > cache, but according to documentation to submit alpha-work too, I > > decided to send this. >=20 > Shouldn't this be rather integrated with the normal transparent huge > pages? It seems odd to develop parallel infrastructure. >=20 > -Andi Hello, I send as attachment some preview of work, last time I putted many work to= =20 make code less messy, etc, but it is still messy and in alpha stage. =3D=3D=3D Info about changes and how it's works =3D=3D=3D Current work is focused to give support for huge pages for tmpfs, but I=20 designed it for private mappings too (my dream will be if I will be able to= =20 map execution portions of glibc as huge). I think there will be no big chan= ge=20 to expose THP for general file system. I putted some effort to do not create new type of huge pages, so I do not u= se=20 longer special flag for managing this. PMD is establish (from historical reasons) from pte fault, so I unmaps pte'= s=20 from pmd (I think I have memory leak here). Splitting of huge page for page cache still need some work, and it has=20 different concept. Mainly I use currently compound_lock to prohibit concurr= ent=20 splitting etc. Splitting acquires compound lock, then unmaps all pmds, and= =20 split occurs. In splitting there is usage of new ref-counting. I may be wrong, but in oth= er=20 cases we will need to manage ref-count bit for compound pages (this what is= =20 included /mm.h, swap.c/ is slightly different from my previous send; I stil= l=20 think if I should use irqsave lock for compounds). I think included constru= ct=20 removes all "under us" risks. I don't want to waste Your time for reviewing this work, but I will be glad= if=20 you will find some time. One thing I worried is about pde locking is it nee= ded=20 to do pmd locking, like for pte (or any other kind of locking? I have some= =20 ideas)? I hope this time here is no missing files. Regards, Rados=C5=82aw Smogura P. S. In one of mails in CC there is putted wrongly my e-mail address and=20 name, please remove it to avoid unknown recipient. --Boundary-00=_1VsPOqak6u1u6d0 Content-Type: application/x-gzip; name="defrag-preview-20110807.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="defrag-preview-20110807.patch.gz" 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 ayQrFp87D3rpKNaNwMWD76pox/8DMLXYV4McAQA= --Boundary-00=_1VsPOqak6u1u6d0-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org