From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25E09C433F5 for ; Fri, 28 Jan 2022 08:54:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347461AbiA1IyX (ORCPT ); Fri, 28 Jan 2022 03:54:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243447AbiA1IyW (ORCPT ); Fri, 28 Jan 2022 03:54:22 -0500 Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3F1BC061714; Fri, 28 Jan 2022 00:54:21 -0800 (PST) Received: by mail-ej1-x62b.google.com with SMTP id s5so13744797ejx.2; Fri, 28 Jan 2022 00:54:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=mfa0O3qu1wZcHEBOXT6AY/+zf9YLw7v0iaKsWN6BE6k=; b=gahkIPkUCispjnbwyFW7qCQKJs7V6/Suv2KYfgacpg0HMhWtTQM92L+zPmt+PUeGyD o6CCE6udcmlCzmeL4RDLgs2RnpngD47kIt3SEZAQJqHYQdpEQ5FsmhSttjAadVHcNrXg bbuECXUl2iSnmGVy5qeiU6Wp6OEWZraXLLKmq6I97Lh2oElZxvTcFf3BVaoElaYQGN47 ZGESroIum1IM1u8AfGbmIY+j/WkOl+2nCZaZxvosiOla5eskc9HPibW5xPMNOLlT4XdJ Fut/zz93mAXb9E88TFLtscbQiZ3Ma7iKbYmzgoAsiAnrggm4w9Df9azAwmxUFU6+tPEE nOig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=mfa0O3qu1wZcHEBOXT6AY/+zf9YLw7v0iaKsWN6BE6k=; b=sfo/VxSS9dh02M20ViEvmDFyriHVlVcyG+6V7fMLq4qboonuew1K4J07uULVc1LV41 DRVffgyzsLXx1oqE/BXMSdeFdMWZSCVArrey/ZNWs+JecKhADZRmGQAatjtyTzwEGJ5N vmKo9QwVr3BngEnk1V7/HO5BrV/3OsqldwVl1Iftm6CCJbUgBjcHaANIGEpR1f7ioE/d A+jWJSnCQU5vjgX3I3C14kPvXO34hCYEk3j3fnFeiJZN2wJACatI9ChvcoPgE3k04sHh 7OYkDZn4MSKzjlOXsGzGxC5/npdcfJgXQJYQjKAsR6o+VCJrwiQkdnJMWy8YayZc+BJa H7fQ== X-Gm-Message-State: AOAM531tSZMVpVrQYfVi0Cmgf6ifU19BLCq9WAI3ypG2iRF5iiHC8RcN XtnrF6UC9HFo2HA0oZOYa+OmqzPRIAqCalcHGuc= X-Google-Smtp-Source: ABdhPJwDVqEdoKYA0/xCVZ9gS/VecyzMcDN47USHcFNSAdkfiUFOOZIl07e7Qubt4Pk2xiAS5KMkMuLmi5+7XiJmOLc= X-Received: by 2002:a17:907:72c3:: with SMTP id du3mr6192984ejc.457.1643360060307; Fri, 28 Jan 2022 00:54:20 -0800 (PST) MIME-Version: 1.0 References: <20220104202227.2903605-1-yuzhao@google.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Fri, 28 Jan 2022 21:54:09 +1300 Message-ID: Subject: Re: [PATCH v6 0/9] Multigenerational LRU Framework To: Yu Zhao Cc: Andrew Morton , Linus Torvalds , Andi Kleen , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , LAK , Linux Doc Mailing List , LKML , Linux-MM , page-reclaim@google.com, x86 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 25, 2022 at 7:48 PM Yu Zhao wrote: > > On Sun, Jan 23, 2022 at 06:43:06PM +1300, Barry Song wrote: > > On Wed, Jan 5, 2022 at 7:17 PM Yu Zhao wrote: > > > > > > Large-scale deployments > > > ----------------------- > > > We've rolled out MGLRU to tens of millions of Chrome OS users and > > > about a million Android users. Google's fleetwide profiling [13] show= s > > > an overall 40% decrease in kswapd CPU usage, in addition to > > > > Hi Yu, > > > > Was the overall 40% decrease of kswap CPU usgae seen on x86 or arm64? > > And I am curious how much we are taking advantage of NONLEAF_PMD_YOUNG. > > Does it help a lot in decreasing the cpu usage? > > Hi Barry, > > The fleet-wide profiling data I shared was from x86. For arm64, I only > have data from synthetic benchmarks at the moment, and it also shows > similar improvements. > > For Chrome OS (individual users), walk_pte_range(), the function that > would benefit from ARCH_HAS_NONLEAF_PMD_YOUNG, only uses a small > portion (<4%) of kswapd CPU time. So ARCH_HAS_NONLEAF_PMD_YOUNG isn't > that helpful. Hi Yu, Thanks! In the current kernel, depending on reverse mapping, while memory is under pressure, the cpu usage of kswapd can be very very high especially while a lot of pag= es have large mapcount, thus a huge reverse mapping cost. Regarding <4%, I guess the figure came from machines with NONLEAF_PMD_YOUN= G=EF=BC=9F In this case, we can skip many PTE scans while PMD has no accessed bit set. But for a machine without NONLEAF, will the figure of cpu usage be much larger? > > > If so, this might be > > a good proof that arm64 also needs this hardware feature? > > In short, I am curious how much the improvement in this patchset depend= s > > on the hardware ability of NONLEAF_PMD_YOUNG. > > For data centers, I do think ARCH_HAS_NONLEAF_PMD_YOUNG has some value. > In addition to cold/hot memory scanning, there are other use cases like > dirty tracking, which can benefit from the accessed bit on non-leaf > entries. I know some proprietary software uses this capability on x86 > for different purposes than this patchset does. And AFAIK, x86 is the > only arch that supports this capability, e.g., risc-v and ppc can only > set the accessed bit in PTEs. Yep. NONLEAF is a nice feature. btw, page table should have a separate DIRTY bit, right? wouldn't dirty pag= e tracking depend on the DIRTY bit rather than the accessed bit? so x86 also = has NONLEAF dirty bit? Or they are scanning accessed bit of PMD before scanning DIRTY bits of PTEs? > > In fact, I've discussed this with one of the arm maintainers Will. So > please check with him too if you are interested in moving forward with > the idea. I might be able to provide with additional data if you need > it to make a decision. I am interested in running it and have some data without NONLEAF especially while free memory is very limited and the system has memory thrashing. > > Thanks. Thanks Barry From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 745E6C433FE for ; Fri, 28 Jan 2022 08:55:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2atSulYeqI5vhPttmmt4fDeGEAs9zAPf+GsHZ95hGU8=; b=1LqFHrKzUPjrXc W/tNOsz34/CsqY8A78G1r0Oej1d8R58lmMDYLG9jGk6Ltb6R5Ej/RiKj6Ws2WBbjRtIoYOhh2Vw7L k6opI1fYcgYSi3McQbVElsOwrkYdHK5UAnRUE0yQyLIHUjnZ7yPw4fZbE65USS8bCSsLypF7adKKD yfuHk134VPG8KebIbXnVkDN5v+gRXoV6i1kMuM6MwytkwAxudAu+1R0l8raFDpkBTSl5cwzlDEMvl SS9EEyNLNZ5I0bjX4E+g0sPpiCzbCl7To8ablWPdXDssUH72gCi/wVab1AgFhpn/iVz2ESoUBwusz xIqCw11R5GFbXlrziHgA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nDN1Y-0015Ey-TS; Fri, 28 Jan 2022 08:54:29 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nDN1S-0015CH-Ca for linux-arm-kernel@lists.infradead.org; Fri, 28 Jan 2022 08:54:25 +0000 Received: by mail-ej1-x62d.google.com with SMTP id m4so13653325ejb.9 for ; Fri, 28 Jan 2022 00:54:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=mfa0O3qu1wZcHEBOXT6AY/+zf9YLw7v0iaKsWN6BE6k=; b=gahkIPkUCispjnbwyFW7qCQKJs7V6/Suv2KYfgacpg0HMhWtTQM92L+zPmt+PUeGyD o6CCE6udcmlCzmeL4RDLgs2RnpngD47kIt3SEZAQJqHYQdpEQ5FsmhSttjAadVHcNrXg bbuECXUl2iSnmGVy5qeiU6Wp6OEWZraXLLKmq6I97Lh2oElZxvTcFf3BVaoElaYQGN47 ZGESroIum1IM1u8AfGbmIY+j/WkOl+2nCZaZxvosiOla5eskc9HPibW5xPMNOLlT4XdJ Fut/zz93mAXb9E88TFLtscbQiZ3Ma7iKbYmzgoAsiAnrggm4w9Df9azAwmxUFU6+tPEE nOig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=mfa0O3qu1wZcHEBOXT6AY/+zf9YLw7v0iaKsWN6BE6k=; b=U/dgaG+PCY7P64tSuL0wTiRwwOyG+OEl1dir5Q6cN48Ki0Rnqu42oBfSDnjSDtJaSp 53W6S2qPLFXbS1mAKezjPmNzBmAYR1T3CIov5El3IoRi4yMO4Q/kY+fV1HYzsL8npRPD G+YNU8tEioWXpLtbBhv5uRiDZK5Wg5dKoIpAdoY3xkkWmhjms15ddmdyImSsQlzpRhJp fVWo6ZBd8LcJsXUVJJgMAMcvrzUjSC5hXcQ/d583mdJ7DagnlSzJ+qBxon5diiDPPW/u FMSltKGx9wk+obpuYd6FNh9BPUwPUSNW2BhYJBOvlTpDc6y/06dwtiVI30s9gqjQaIgM KeYw== X-Gm-Message-State: AOAM533PzDIaCiwyHZSEADYNDWfi7a6BvreOR933vvLY6JDqpOoaHLcx YSfzJSEV6lE7jYZoDpBstbV5iXoMhkkfzNFun6U= X-Google-Smtp-Source: ABdhPJwDVqEdoKYA0/xCVZ9gS/VecyzMcDN47USHcFNSAdkfiUFOOZIl07e7Qubt4Pk2xiAS5KMkMuLmi5+7XiJmOLc= X-Received: by 2002:a17:907:72c3:: with SMTP id du3mr6192984ejc.457.1643360060307; Fri, 28 Jan 2022 00:54:20 -0800 (PST) MIME-Version: 1.0 References: <20220104202227.2903605-1-yuzhao@google.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Fri, 28 Jan 2022 21:54:09 +1300 Message-ID: Subject: Re: [PATCH v6 0/9] Multigenerational LRU Framework To: Yu Zhao Cc: Andrew Morton , Linus Torvalds , Andi Kleen , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , LAK , Linux Doc Mailing List , LKML , Linux-MM , page-reclaim@google.com, x86 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220128_005422_481761_99A76AE7 X-CRM114-Status: GOOD ( 28.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBKYW4gMjUsIDIwMjIgYXQgNzo0OCBQTSBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNv bT4gd3JvdGU6Cj4KPiBPbiBTdW4sIEphbiAyMywgMjAyMiBhdCAwNjo0MzowNlBNICsxMzAwLCBC YXJyeSBTb25nIHdyb3RlOgo+ID4gT24gV2VkLCBKYW4gNSwgMjAyMiBhdCA3OjE3IFBNIFl1IFpo YW8gPHl1emhhb0Bnb29nbGUuY29tPiB3cm90ZToKPgo+IDxzbmlwcGVkPgo+Cj4gPiA+IExhcmdl LXNjYWxlIGRlcGxveW1lbnRzCj4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+IFdl J3ZlIHJvbGxlZCBvdXQgTUdMUlUgdG8gdGVucyBvZiBtaWxsaW9ucyBvZiBDaHJvbWUgT1MgdXNl cnMgYW5kCj4gPiA+IGFib3V0IGEgbWlsbGlvbiBBbmRyb2lkIHVzZXJzLiBHb29nbGUncyBmbGVl dHdpZGUgcHJvZmlsaW5nIFsxM10gc2hvd3MKPiA+ID4gYW4gb3ZlcmFsbCA0MCUgZGVjcmVhc2Ug aW4ga3N3YXBkIENQVSB1c2FnZSwgaW4gYWRkaXRpb24gdG8KPiA+Cj4gPiBIaSBZdSwKPiA+Cj4g PiBXYXMgdGhlIG92ZXJhbGwgNDAlIGRlY3JlYXNlIG9mIGtzd2FwIENQVSB1c2dhZSBzZWVuIG9u IHg4NiBvciBhcm02ND8KPiA+IEFuZCBJIGFtIGN1cmlvdXMgaG93IG11Y2ggd2UgYXJlIHRha2lu ZyBhZHZhbnRhZ2Ugb2YgTk9OTEVBRl9QTURfWU9VTkcuCj4gPiBEb2VzIGl0IGhlbHAgYSBsb3Qg aW4gZGVjcmVhc2luZyB0aGUgY3B1IHVzYWdlPwo+Cj4gSGkgQmFycnksCj4KPiBUaGUgZmxlZXQt d2lkZSBwcm9maWxpbmcgZGF0YSBJIHNoYXJlZCB3YXMgZnJvbSB4ODYuIEZvciBhcm02NCwgSSBv bmx5Cj4gaGF2ZSBkYXRhIGZyb20gc3ludGhldGljIGJlbmNobWFya3MgYXQgdGhlIG1vbWVudCwg YW5kIGl0IGFsc28gc2hvd3MKPiBzaW1pbGFyIGltcHJvdmVtZW50cy4KPgo+IEZvciBDaHJvbWUg T1MgKGluZGl2aWR1YWwgdXNlcnMpLCB3YWxrX3B0ZV9yYW5nZSgpLCB0aGUgZnVuY3Rpb24gdGhh dAo+IHdvdWxkIGJlbmVmaXQgZnJvbSBBUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORywgb25seSB1 c2VzIGEgc21hbGwKPiBwb3J0aW9uICg8NCUpIG9mIGtzd2FwZCBDUFUgdGltZS4gU28gQVJDSF9I QVNfTk9OTEVBRl9QTURfWU9VTkcgaXNuJ3QKPiB0aGF0IGhlbHBmdWwuCgpIaSBZdSwKVGhhbmtz IQoKSW4gdGhlIGN1cnJlbnQga2VybmVsLCBkZXBlbmRpbmcgb24gcmV2ZXJzZSBtYXBwaW5nLCB3 aGlsZSBtZW1vcnkgaXMKdW5kZXIgcHJlc3N1cmUsCnRoZSBjcHUgdXNhZ2Ugb2Yga3N3YXBkIGNh biBiZSB2ZXJ5IHZlcnkgaGlnaCBlc3BlY2lhbGx5IHdoaWxlIGEgbG90IG9mIHBhZ2VzCmhhdmUg bGFyZ2UgbWFwY291bnQsIHRodXMgYSBodWdlIHJldmVyc2UgbWFwcGluZyBjb3N0LgoKUmVnYXJk aW5nICA8NCUsIEkgZ3Vlc3MgdGhlIGZpZ3VyZSBjYW1lIGZyb20gbWFjaGluZXMgd2l0aCBOT05M RUFGX1BNRF9ZT1VOR++8nwpJbiB0aGlzIGNhc2UsIHdlIGNhbiBza2lwIG1hbnkgUFRFIHNjYW5z IHdoaWxlIFBNRCBoYXMgbm8gYWNjZXNzZWQgYml0CnNldC4gQnV0IGZvcgphIG1hY2hpbmUgd2l0 aG91dCBOT05MRUFGLCB3aWxsIHRoZSBmaWd1cmUgb2YgY3B1IHVzYWdlIGJlIG11Y2ggbGFyZ2Vy PwoKPgo+ID4gSWYgc28sIHRoaXMgbWlnaHQgYmUKPiA+IGEgZ29vZCBwcm9vZiB0aGF0IGFybTY0 IGFsc28gbmVlZHMgdGhpcyBoYXJkd2FyZSBmZWF0dXJlPwo+ID4gSW4gc2hvcnQsIEkgYW0gY3Vy aW91cyBob3cgbXVjaCB0aGUgaW1wcm92ZW1lbnQgaW4gdGhpcyBwYXRjaHNldCBkZXBlbmRzCj4g PiBvbiB0aGUgaGFyZHdhcmUgYWJpbGl0eSBvZiBOT05MRUFGX1BNRF9ZT1VORy4KPgo+IEZvciBk YXRhIGNlbnRlcnMsIEkgZG8gdGhpbmsgQVJDSF9IQVNfTk9OTEVBRl9QTURfWU9VTkcgaGFzIHNv bWUgdmFsdWUuCj4gSW4gYWRkaXRpb24gdG8gY29sZC9ob3QgbWVtb3J5IHNjYW5uaW5nLCB0aGVy ZSBhcmUgb3RoZXIgdXNlIGNhc2VzIGxpa2UKPiBkaXJ0eSB0cmFja2luZywgd2hpY2ggY2FuIGJl bmVmaXQgZnJvbSB0aGUgYWNjZXNzZWQgYml0IG9uIG5vbi1sZWFmCj4gZW50cmllcy4gSSBrbm93 IHNvbWUgcHJvcHJpZXRhcnkgc29mdHdhcmUgdXNlcyB0aGlzIGNhcGFiaWxpdHkgb24geDg2Cj4g Zm9yIGRpZmZlcmVudCBwdXJwb3NlcyB0aGFuIHRoaXMgcGF0Y2hzZXQgZG9lcy4gQW5kIEFGQUlL LCB4ODYgaXMgdGhlCj4gb25seSBhcmNoIHRoYXQgc3VwcG9ydHMgdGhpcyBjYXBhYmlsaXR5LCBl LmcuLCByaXNjLXYgYW5kIHBwYyBjYW4gb25seQo+IHNldCB0aGUgYWNjZXNzZWQgYml0IGluIFBU RXMuCgpZZXAuIE5PTkxFQUYgaXMgYSBuaWNlIGZlYXR1cmUuCgpidHcsIHBhZ2UgdGFibGUgc2hv dWxkIGhhdmUgYSBzZXBhcmF0ZSBESVJUWSBiaXQsIHJpZ2h0PyB3b3VsZG4ndCBkaXJ0eSBwYWdl CnRyYWNraW5nIGRlcGVuZCBvbiB0aGUgRElSVFkgYml0IHJhdGhlciB0aGFuIHRoZSBhY2Nlc3Nl ZCBiaXQ/IHNvIHg4NiBhbHNvIGhhcwpOT05MRUFGIGRpcnR5IGJpdD8gT3IgdGhleSBhcmUgc2Nh bm5pbmcgYWNjZXNzZWQgYml0IG9mIFBNRCBiZWZvcmUKc2Nhbm5pbmcgRElSVFkgYml0cyBvZiBQ VEVzPwoKPgo+IEluIGZhY3QsIEkndmUgZGlzY3Vzc2VkIHRoaXMgd2l0aCBvbmUgb2YgdGhlIGFy bSBtYWludGFpbmVycyBXaWxsLiBTbwo+IHBsZWFzZSBjaGVjayB3aXRoIGhpbSB0b28gaWYgeW91 IGFyZSBpbnRlcmVzdGVkIGluIG1vdmluZyBmb3J3YXJkIHdpdGgKPiB0aGUgaWRlYS4gSSBtaWdo dCBiZSBhYmxlIHRvIHByb3ZpZGUgd2l0aCBhZGRpdGlvbmFsIGRhdGEgaWYgeW91IG5lZWQKPiBp dCB0byBtYWtlIGEgZGVjaXNpb24uCgpJIGFtIGludGVyZXN0ZWQgaW4gcnVubmluZyBpdCBhbmQg aGF2ZSBzb21lIGRhdGEgd2l0aG91dCBOT05MRUFGCmVzcGVjaWFsbHkgd2hpbGUgZnJlZSBtZW1v cnkgaXMgdmVyeSBsaW1pdGVkIGFuZCB0aGUgc3lzdGVtIGhhcyBtZW1vcnkKdGhyYXNoaW5nLgoK Pgo+IFRoYW5rcy4KClRoYW5rcwpCYXJyeQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=