From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751588AbdE3OPI (ORCPT ); Tue, 30 May 2017 10:15:08 -0400 Received: from mail-db5eur01on0129.outbound.protection.outlook.com ([104.47.2.129]:24170 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750951AbdE3OPG (ORCPT ); Tue, 30 May 2017 10:15:06 -0400 Authentication-Results: lge.com; dkim=none (message not signed) header.d=none;lge.com; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: [PATCH v1 00/11] mm/kasan: support per-page shadow memory to reduce memory consumption To: Dmitry Vyukov , Joonsoo Kim References: <1494897409-14408-1-git-send-email-iamjoonsoo.kim@lge.com> <20170516062318.GC16015@js1304-desktop> <20170524074539.GA9697@js1304-desktop> <20170525004104.GA21336@js1304-desktop> CC: Andrew Morton , Alexander Potapenko , kasan-dev , "linux-mm@kvack.org" , LKML , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , From: Andrey Ryabinin Message-ID: <3a7664a9-e360-ab68-610a-1b697a4b00b5@virtuozzo.com> Date: Tue, 30 May 2017 17:16:56 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0802CA0020.eurprd08.prod.outlook.com (10.172.123.158) To AM4PR0801MB2723.eurprd08.prod.outlook.com (10.167.90.153) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM4PR0801MB2723: X-MS-Office365-Filtering-Correlation-Id: f1acb01c-0868-45fb-f350-08d4a7664395 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:AM4PR0801MB2723; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0801MB2723;3:SXcrLb981whjawkP16ykjW3yfWdbQUw+w7OyB5JKtUlbtwxjplwzBWI++ATZCUJ2ZQKbrsr/XLD5e3bCSDIOF5lbVwYi7aOXypzjcLpyHIjCVKW+Qgp1ByaSg5SIX9Lk+SERCy3OaUfAjdAoPwJ+brNCEH7/bDJPv3I+wRCpxlvnLcPmaTH+qUJs0IgPX/mB3x0qzvxWPEqCpA16hP+/Zn3UQo9di0PK19cxvIiXJlLlDIwmB+bpR1m7bFaIHdmQsBr3xUB6a6DH5MlVW1TKgFW8UdaCD5Uz/x/3I1Ofsyqso+MlytuCe76KseqBU78Caf1ioAo/4rLVF7eHa9T5FQ==;25:bcCxq96k+cTgUyOEQDbCC+9Z+I8yPdq/Eu8FW7facCv1vWnSTolXC1llrMkaIEQNMMU9j84Y4jl2vYQw3fpfC8osUJMGlYxTkMpTyNiJUmQYc9YmBg6b8JvtoPOWVCLcvknQUfLmZROxjZnke4kXXAFoBRkqbq4gfCTOZl4a43ikfGJlukZbvjrGBd3LnFmxgFis6B7CJHxDIO20bIJCpxrRlRGTVPxY/Y1ViZbf8I9H0CtqtiHIReM1N5Ggilm4CxR1vOlPsvaNEZvhpsLmay4HBh7/99sm9huOVL2tJIrEAifvf1Z0P+dzW7uuXsj1vzkBLipCsH5928ni93w8D8ET52iOlaRLCtUp6o8Ov3NvA4ASN14nweqaVVCIiAGqAxCvKiclCDqm5imwMFUi/PiDxMIdsjXYDBsgDn0FaekhKzLYByRSrJSclHEKpT72yUbEJzg1zZW0WZTMrRlGGjBODLZb/KPXTQUB88gfhME= X-Microsoft-Exchange-Diagnostics: 1;AM4PR0801MB2723;31:VNXhsBE1D+2GJCCPXlrxXhYz9nN6HSWSkZR7KoKn4Us6KczKAJVo3Oku4vCwjx+M9U4Dv7zN6Gr1uYULyi3cg5an82MFyVCdTZNzyyq7OStgSzdCIuqkbxsvtwebNXsEJhPBSZpNXC9wElvzAJVEZZcy01nislCcoGHWIMR+S96qf0JpdR8W6126/CM2SpWUAzof6HhvcjaHT/LqGuklERXpDa2q4yxCMGd2vX/o14rtPUXIHZ/pV4F/l49mQRieKSUweNAKvDCNAoaUz8boYg==;20:S0a1sEP4e8M/wBn0ulSth7GcTHJO6AlcTudezWFBYcErAa4jiEjRvUubex/RW/SoL7i4U60zKkO+EnA1f+cMAx6svvp+zvXDluDWn3//bXSg5BBKN2F1aKM/a+bIfxG659GX2tJXAjlFyzVAFuvRlCdbPFAC7BcO89mxNz9Ugnd1fkeNMi8qVrdPXni6Ggo3VHq3zidkCpIsZZbGyXVuY8D+rejtDlAgiCVDCHRf6WCI+znNgZaKCj7nVAT9PbCWezK+apd/6t3cgP/mJSxyLknstYLiGpaahDJ44C3LbaNmAkvyaveOWQw4MF63cVkEAtvjQOo3XuwqbmUXExId18uiDl4WwP69HjONAf6KoscdE8Kwk7s8lJRyTs0cFp4rFUDLuQKuEDHLQjEfMj0XGfb69oej38EP+A59DiJUHnE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820)(228788266533470)(211936372134217); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(6072148);SRVR:AM4PR0801MB2723;BCL:0;PCL:0;RULEID:;SRVR:AM4PR0801MB2723; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0801MB2723;4:TdcdlUUfduUQuX22A6Xq4E+4z/NFMo/pXHrWhMoZ+6b9MiuCjaomV3vs6CtsRbtbBKH7hYZ9DsYm+xZDjPEaXZLnlWSyrEu7R7POVV7la7bbyqXoObRL7PKq14i6EhRgtC2UqzzpDxT5LpKTmkqoYGM/nVgL+dhDyAPqIiRRPUHOCT8ouvRbDyn4gR18n/j5AzHGW5wc1+1u0wGvHxG5VDIp+jerTH2/GdfT1wPOFqEl5zhdRDrbRft0vf8gEDEY3dWuJFdlm2ax1MZYA596DVxLJ7Sh2XQn7xNaAikVhvZA2XIqpjORAcQZ8GBVQWpvGzNrIuCsehGsdnIp6iB6EPzksuZ72G4OtoCsvIB0Rz4pp/agUHoJ0ZrY2BZ7BW71msY4KLDNJXW/gsJWnFVyqiipA0jRQLRBz25iNHD9Q8qzFGSKGLveL9Kwh4ZkMDdQL3qHRQerU/xrXFRIn3R50pxA7gOGr7EfT87wo+mdrtozfsbg/sXDJhd9AbNeiG7Ed5xvCGk+Sze6bdR+p8rJJVYCRnSkyPeIOLjoS0/NrFqwVWukwCzUlY4feP6jE30P4FXgMMNI0CES8yIBPXUatVcbDrKKTwB4W5D9GZQO2aVgdhqJr/tIG2y056KFJAvwUUB2z30ErZqsOB92xY4K1Hvkbfpx0vVbcKa4A8sWGnenuTEhAG4nczkEuz1NUowUO+qe/IoQTfEVw1JhNXiDS2JESKHXuzex/Nz7abNJuJEqukUXnw0mG/NH8d9wI5p5zheZ7gHelV73EUbyBLmheT8g1p+qtdIYfeBUtZybZY0Hjc0jM6dXl3zankvvZiQb5bcvXxFvk3fR+1tZhVY6AZeTAy491pS+Nvl86DyKac6+Mfz5cnUBb5uzVL1soIRZG6/hat9t/yQz0iweZWN0Jg== X-Forefront-PRVS: 032334F434 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39400400002)(39410400002)(39830400002)(39450400003)(76104003)(24454002)(377454003)(478600001)(7736002)(53936002)(76176999)(54356999)(50986999)(42186005)(561944003)(966005)(6246003)(31686004)(6666003)(23676002)(2906002)(2950100002)(36756003)(230700001)(65826007)(54906002)(4001350100001)(6306002)(77096006)(7416002)(38730400002)(3846002)(66066001)(6486002)(83506001)(6116002)(5890100001)(93886004)(53546009)(25786009)(189998001)(4326008)(31696002)(50466002)(90366009)(86362001)(33646002)(229853002)(5660300001)(47776003)(305945005)(81166006)(8676002);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR0801MB2723;H:[172.16.25.12];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTRQUjA4MDFNQjI3MjM7MjM6VzJEWHlGc1d0U29zUkxTcnZMWW1Oam11?= =?utf-8?B?b0NrR3NlZ0VXbTU0UW9YZFpPeXhnRjhmWTZFbGZiMzBrb2JYQUdQSXdoVE9E?= =?utf-8?B?SGRub2ZTcmxJZllpd2FHY1R6SlMzbGFyR1BxN3lJUUgwcERFOU9VeFErSUNj?= =?utf-8?B?SUllV3NrSXduRHRXZGJFcC9EWXc1T0JXTE9LN0ZrazZrM2ROL3czUHh6UWZT?= =?utf-8?B?U3UveGx4bXNsNHB0MENYR29FeXUyaFlwbnptQVBjVXdkN3E5UStRU1pMdGdk?= =?utf-8?B?WXFsSWJpYlRmUkdmTVptWnAyL0s3amROV01Uek80RVoxYUhEQkFmeUhOZ21L?= =?utf-8?B?bm4xVzhIS2ZtWlMza25QZ0JYbE5iVVdnZkdhZjl4bVNGRFVzSmhoT24zUjIy?= =?utf-8?B?K0Nsc0FoL1dIeDJPUVl4MU1ER2QzNkljTEdUOFhEQitzSmVjaDV4c3N5Zlhx?= =?utf-8?B?OWdwT2tFL0VLVk5RM2dHZ3Joak5Ta3RKclBpcSt5Sy9NbW0yK25nODZvdWRO?= =?utf-8?B?TThiQTVsc0RLSElKc0xnaXoxRXJSY0VUNUNCeS9zWXFRL3RSV0xWU2I1ZU5T?= =?utf-8?B?eHE2K21jNkNLejMyekM3WGhDSlJzOU1XenA2V2h3Ukdyd3lhNEJlSkRoT0R3?= =?utf-8?B?cCtzVXVLVU5GRnlxNldrU3ZCMnArREZKRjU4UFh0RTZhTTY4dXg4MFRxaWhi?= =?utf-8?B?VEtyY3ZseGEzZ3g2eXdXZTQ1ZzV2U0ZvRitEc0I3eXBIZ0R5VDlwdkhxRjNO?= =?utf-8?B?NDZzTDE4Q3lYY1I5dmZsZmp1SU9KU01RdmJVRkxnQ05iUzVac2M1VlpvMGRl?= =?utf-8?B?a3l6UHlxSkFBdUtNN2FnNTBaL0RXbEFuWkp0am5lUkV3eWowTUVxVklvbmky?= =?utf-8?B?OWViVUJNcTBDOUFMcU50V2U5Ym43VnZkellOK2R3LzhQRUh5bXdJYVJoOFI5?= =?utf-8?B?L1BKNm0vNDd3NW0xemhMeEdoc210bEoyc2JlR0ZieDJMZXNhRXNPcEdoYWd6?= =?utf-8?B?SXZYaTBsN3B6NzlpZTU1aWh1bWlUZWpscXhKcFZTWDNXT2VCM0R5UzZheDgv?= =?utf-8?B?RU9vb1JLaFU5NXVUenVEREpEamxtRDk1WHp2VEo1a3NlcDc2dzkwSHNDR1ZL?= =?utf-8?B?MUtjT3ZLdEwybzhlU1pUK1M4bWZ2cFdoZk80bGxwSGVCcnRGVGJiODBOd3V4?= =?utf-8?B?R1pCMzM1OEpoNmN2TzlkQkRxdHQra01qUGtQRXFMWEt0bzJBVEhGUCs2OWti?= =?utf-8?B?cytSU2xjOHRKeHdCRXJwTDlST3RkR2RaT0dueXBKam1tYkk1YWg3V1M5dmRv?= =?utf-8?B?bmthZzZHbnBVTzc4aXQzeHNXTWJ0akxhejU3aXY1bG9IdUxJYUh0MlFwaHMz?= =?utf-8?B?cWphVEpuMDV1a3RzNkZpWkZrTWFUVzU3RnlmMjVLNGV2TzJSYzdwMzZweURP?= =?utf-8?B?S29HR1lxSXg4bjAzTXN4cnVmTTZpOVZ3aXlEZWxhSW1ZanFEcnF6enViV2Qr?= =?utf-8?B?U1B2WFhJUlk5ZWx0Qi83bUpTc3ZrSXhaeG80SWVwWUdna0g5ZmpDRjVMYWVX?= =?utf-8?B?YUZSVjFFQWczYW5JMUQ1ZDBDcmtQN1Z0Y2pJSitRQ0lOSHg0YkJWY1h2anI2?= =?utf-8?B?ckFxTVpBcmVtNGs5VS9SckZXR2I2RGJEajNqTzZJTWdOalc5Q3VUeVNKU3M1?= =?utf-8?B?QTR6bE1rTFg1MjlIRUtmSFRpSjJOemM5QlloWUo1OGxTR25lOG5IdUtxc0Jk?= =?utf-8?B?MmlDSFR4cE96OUpCK3oySUd4bmw0bFRIN0ZpWVN3U3NpWktUaGNuaVJhWi84?= =?utf-8?B?bFhiYnRaRGFuM1ZXR3ZHYlEyaVZyclV0SUpaOS81QzBQM0ZQRy9mL3JNWUhY?= =?utf-8?Q?WUJgkaugH1WzU=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR0801MB2723;6:ses+WQQLWCYx3rHVX3pD0gc69bN9iTHiOaBcpJpRNU2wxuLD2i2GZdcaY4TBBNXDq4D3jFr7hrKKw7AOfjY4S/Zg6jZ9smAwUcmWw1xp1iefY7J2aj4mPHEGU4xkFAQtB+BHGT78+xF0c0hmOP9MKFv3owkVeUfHfvtUl1SQ6ASZUx0pE2+JsvqFw16zC+QUTa5wZJEvhEwDYpbmT3qwbK0bp/d3edwrT6WDRb+XJGwh/ZuD1uEJLJjJlN3y+4NnxcIao3LRnffjiaLcS2f65ZVNsxsaQNYdNQE4gVGhgBwPAmBJjPdK1cjCBgVzbxN91BSS6cIwQ+3MwbdypxkKPFHcwSiP5PG75uoU8THBPcv67u9H/DwVVtpsTCMAoNPHyE86nvj5f3LhM7yOyPx7vqXfHxL6Vzk1P7mmCfIY/OMfFNHZvYS7aUZEa9cZzyXJoqs7aiiX5Nhsk85Ffo4op4GxT5GqMnbYKvj9m+mcm5N9ysya6Tf2CYcvubDaz6K0g34kEGMoPWa+wOQ2ojHz1g==;5:t+LpMxbq9Xz4VIxPexcfyM1oQ627SeXttvK7O5sHfbXtzJN5/N07250SCLWKDBl7I9UVr5RDRTqM0F8j5pJevFfYCcysHca1gr7N4J2TMJsFdUzi3B6KkE0wu0vYMF+teM+fiewpRAhOdJLsa8jzFg==;24:bk+DAK4WlZUnXdjZg3n503v8Kx4RpsfTB0R4pnJXokMvaGnUp2HtQW4gDHl8jo1YIZcpC0nc6QUOUpcGpkOijTRSgm4dyPlazXlHp7eu1zg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR0801MB2723;7:iC6pOt1ZEfHads83IpzqutZ/Xt+2ry9kxqaffDoX8ZvcivwCg3T8ugUD1cm0TsPD5rBa81xrP9YQdhM3iAp5we1V8Hdo4dcszchvALzg5NTqzgHtP391anxxra+AQ1Fe8tuccP9tQdViHE8wqc4OWYn56vbtNpOaqjqyBlkV81QH0olTqoAqrgw7MYmxgTR7ylgOVLNysbBv/mFCST4Y7qy5UdjU6uzbYBmDU4d2hmw1ND8hhusryrMoUGnUpc+2b+sBydJdDtAOgzGZ3hrnVsPY04BHES5h76LEQbS4dCsFC/rhlZ0CZEK3WKkPley+R3ALxSmxIwh+3yNKqPLeMw==;20:WaSQ1x7TGtzW/pjUps8M1dhvK780PyC8lmGKHvFQzms4MAFqAm/C6HrZMpK+yjINmkF8ScjZxpWvtlgddLE6vRlFM3hamD1uc/aJ4mp1h4q0artjUYpLgBfQ7O0GLVhQvL0yHNTGrNr1lAoS/IfVqSTlj9t4xOlXuflZC83dlZQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2017 14:15:01.7860 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0801MB2723 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/29/2017 06:29 PM, Dmitry Vyukov wrote: > Joonsoo, > > I guess mine (and Andrey's) main concern is the amount of additional > complexity (I am still struggling to understand how it all works) and > more arch-dependent code in exchange for moderate memory win. > > Joonsoo, Andrey, > > I have an alternative proposal. It should be conceptually simpler and > also less arch-dependent. But I don't know if I miss something > important that will render it non working. > Namely, we add a pointer to shadow to the page struct. Then, create a > slab allocator for 512B shadow blocks. Then, attach/detach these > shadow blocks to page structs as necessary. It should lead to even > smaller memory consumption because we won't need a whole shadow page > when only 1 out of 8 corresponding kernel pages are used (we will need > just a single 512B block). I guess with some fragmentation we need > lots of excessive shadow with the current proposed patch. > This does not depend on TLB in any way and does not require hooking > into buddy allocator. > The main downside is that we will need to be careful to not assume > that shadow is continuous. In particular this means that this mode > will work only with outline instrumentation and will need some ifdefs. > Also it will be slower due to the additional indirection when > accessing shadow, but that's meant as "small but slow" mode as far as > I understand. It seems that you are forgetting about stack instrumentation. You'll have to disable it completely, at least with current implementation of it in gcc. > But the main win as I see it is that that's basically complete support > for 32-bit arches. People do ask about arm32 support: > https://groups.google.com/d/msg/kasan-dev/Sk6BsSPMRRc/Gqh4oD_wAAAJ > https://groups.google.com/d/msg/kasan-dev/B22vOFp-QWg/EVJPbrsgAgAJ > and probably mips32 is relevant as well. I don't see how above is relevant for 32-bit arches. Current design is perfectly fine for 32-bit arches. I did some POC arm32 port couple years ago - https://github.com/aryabinin/linux/commits/kasan/arm_v0_1 It has some ugly hacks and non-critical bugs. AFAIR it also super-slow because I (mistakenly) made shadow memory uncached. But otherwise it works. > Such mode does not require a huge continuous address space range, has > minimal memory consumption and requires minimal arch-dependent code. > Works only with outline instrumentation, but I think that's a > reasonable compromise. > > What do you think? I don't understand why we trying to invent some hacky/complex schemes when we already have a simple one - scaling shadow to 1/32. It's easy to implement and should be more performant comparing to suggested schemes.