From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760758AbcAKXQZ (ORCPT ); Mon, 11 Jan 2016 18:16:25 -0500 Received: from g9t5008.houston.hp.com ([15.240.92.66]:55776 "EHLO g9t5008.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757663AbcAKXQY (ORCPT ); Mon, 11 Jan 2016 18:16:24 -0500 From: "Seymour, Shane M" To: Mathieu Desnoyers , Thomas Gleixner , Paul Turner , Andrew Hunter , Peter Zijlstra CC: "linux-kernel@vger.kernel.org" , "linux-api@vger.kernel.org" , Andy Lutomirski , Andi Kleen , Dave Watson , Chris Lameter , Ingo Molnar , Ben Maurer , Steven Rostedt , "Paul E. McKenney" , Josh Triplett , Linus Torvalds , Andrew Morton , Russell King , Catalin Marinas , Will Deacon , Michael Kerrisk Subject: RE: [RFC PATCH 0/3] Implement getcpu_cache system call Thread-Topic: [RFC PATCH 0/3] Implement getcpu_cache system call Thread-Index: AQHRR4cHoyUzwJLGvU+0ltTZgExGbJ726/+wgAAQ3BA= Date: Mon, 11 Jan 2016 23:16:10 +0000 Message-ID: References: <1451977320-4886-1-git-send-email-mathieu.desnoyers@efficios.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [16.210.48.36] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 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 u0BNGWOx003898 Ignore my email I'd overlooked one bit of code misunderstood how it worked. -----Original Message----- From: linux-api-owner@vger.kernel.org [mailto:linux-api-owner@vger.kernel.org] On Behalf Of Seymour, Shane M Sent: Tuesday, January 12, 2016 9:38 AM To: Mathieu Desnoyers; Thomas Gleixner; Paul Turner; Andrew Hunter; Peter Zijlstra Cc: linux-kernel@vger.kernel.org; linux-api@vger.kernel.org; Andy Lutomirski; Andi Kleen; Dave Watson; Chris Lameter; Ingo Molnar; Ben Maurer; Steven Rostedt; Paul E. McKenney; Josh Triplett; Linus Torvalds; Andrew Morton; Russell King; Catalin Marinas; Will Deacon; Michael Kerrisk Subject: RE: [RFC PATCH 0/3] Implement getcpu_cache system call Hi Mathieu, I have some concerns and suggestions for you about this. What's to stop someone in user space from requesting an arbitrarily large number of CPU # cache locations that the kernel needs to allocate memory to track and each time the task migrates to a new CPU it needs to update them all? Could you use it to dramatically slow down a system/task switching? Should there be a ulimit type value or a sysctl setting to limit the number that you're allowed to register per-task? If you can just register consecutive addresses each 4 bytes apart the size of the structure required to keep track of it in the kernel looks to be 20 or 24 bytes long depending on kernel bitness (using kmalloc it should be 32 bytes allocated either way) so if you do something like tie up 1GiB of memory in user space registered with CPU cache locations it will tie up >8GiB of memory in the kernel and there will be a huge linked list that will take significant amounts of time to traverse. You could use it as a local denial of service attack to try and soak up memory and cause a kernel OOM because the kernel needs more memory to keep track of the request compared to the size of the memory used by user space to create it. There doesn't currently appear to be any upper bounds on the number that can be registered. In terms of tracking what it's doing would you consider some sysfs attribute files (or something in debugfs) that tracked (these would all be in the add path so it shouldn't be performance sensitive): 1) The largest number of entries someone has created in the list in any task 2) The number of times (assuming you implement an upper bound on the number allowed) the upper bound is being hit (to allow someone to monitor for issues where the upper bound is being hit) Assuming that something (e.g. glibc) is willing to register and make an entry available for the life of the task consider allowing one flag, for example, GETCPU_CACHE_PERSISTENT with GETCPU_CACHE_CMD_REGISTER and have a new command GETCPU_CACHE_CMD_GET_ PERSISTENT to allow someone to ask for the user space address of an entry that something has guaranteed will be there until the task ends. If none exist they can fall back and allocate a new one - it allows for better reuse of an existing resource but log a warning if you're forced to remove a persistent entry or someone attempts to unregister it (which should always fail) since someone in user space will have broken their promise that it will always be there until the task ends (that means persistent ones should be left to be torn down by the kernel not unregistered from user space). If you do this you might need to optimize the find process so it's more likely the first persistent one will be the first one found if you think someone is more likely to take the approach of asking for that first and falling back to creating a new one if there isn't already one present. Having this will also tend to limit the number of these that anyone will need to create if most libraries ask for a persistent entry first. Thanks Shane �{.n�+�������+%��lzwm��b�맲��r��zX����)���w*jg��������ݢj/���z�ޖ��2�ޙ���&�)ߡ�a�����G���h��j:+v���w�٥ From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Seymour, Shane M" Subject: RE: [RFC PATCH 0/3] Implement getcpu_cache system call Date: Mon, 11 Jan 2016 23:16:10 +0000 Message-ID: References: <1451977320-4886-1-git-send-email-mathieu.desnoyers@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Mathieu Desnoyers , Thomas Gleixner , Paul Turner , Andrew Hunter , Peter Zijlstra Cc: "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Andy Lutomirski , Andi Kleen , Dave Watson , Chris Lameter , Ingo Molnar , Ben Maurer , Steven Rostedt , "Paul E. McKenney" , Josh Triplett , Linus Torvalds , Andrew Morton , Russell King , Catalin Marinas , Will Deacon , Michael Kerrisk List-Id: linux-api@vger.kernel.org SWdub3JlIG15IGVtYWlsIEknZCBvdmVybG9va2VkIG9uZSBiaXQgb2YgY29kZSBtaXN1bmRlcnN0 b29kIGhvdyBpdCB3b3JrZWQuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBs aW51eC1hcGktb3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86bGludXgtYXBpLW93bmVyQHZn ZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIFNleW1vdXIsIFNoYW5lIE0NClNlbnQ6IFR1ZXNk YXksIEphbnVhcnkgMTIsIDIwMTYgOTozOCBBTQ0KVG86IE1hdGhpZXUgRGVzbm95ZXJzOyBUaG9t YXMgR2xlaXhuZXI7IFBhdWwgVHVybmVyOyBBbmRyZXcgSHVudGVyOyBQZXRlciBaaWpsc3RyYQ0K Q2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFwaUB2Z2VyLmtlcm5lbC5v cmc7IEFuZHkgTHV0b21pcnNraTsgQW5kaSBLbGVlbjsgRGF2ZSBXYXRzb247IENocmlzIExhbWV0 ZXI7IEluZ28gTW9sbmFyOyBCZW4gTWF1cmVyOyBTdGV2ZW4gUm9zdGVkdDsgUGF1bCBFLiBNY0tl bm5leTsgSm9zaCBUcmlwbGV0dDsgTGludXMgVG9ydmFsZHM7IEFuZHJldyBNb3J0b247IFJ1c3Nl bGwgS2luZzsgQ2F0YWxpbiBNYXJpbmFzOyBXaWxsIERlYWNvbjsgTWljaGFlbCBLZXJyaXNrDQpT dWJqZWN0OiBSRTogW1JGQyBQQVRDSCAwLzNdIEltcGxlbWVudCBnZXRjcHVfY2FjaGUgc3lzdGVt IGNhbGwNCg0KSGkgTWF0aGlldSwNCg0KSSBoYXZlIHNvbWUgY29uY2VybnMgYW5kIHN1Z2dlc3Rp b25zIGZvciB5b3UgYWJvdXQgdGhpcy4NCg0KV2hhdCdzIHRvIHN0b3Agc29tZW9uZSBpbiB1c2Vy IHNwYWNlIGZyb20gcmVxdWVzdGluZyBhbiBhcmJpdHJhcmlseSBsYXJnZSBudW1iZXIgb2YgQ1BV ICMgY2FjaGUgbG9jYXRpb25zIHRoYXQgdGhlIGtlcm5lbCBuZWVkcyB0byBhbGxvY2F0ZSBtZW1v cnkgdG8gdHJhY2sgYW5kIGVhY2ggdGltZSB0aGUgdGFzayBtaWdyYXRlcyB0byBhIG5ldyBDUFUg aXQgbmVlZHMgdG8gdXBkYXRlIHRoZW0gYWxsPyBDb3VsZCB5b3UgdXNlIGl0IHRvIGRyYW1hdGlj YWxseSBzbG93IGRvd24gYSBzeXN0ZW0vdGFzayBzd2l0Y2hpbmc/IFNob3VsZCB0aGVyZSBiZSBh IHVsaW1pdCB0eXBlIHZhbHVlIG9yIGEgc3lzY3RsIHNldHRpbmcgdG8gbGltaXQgdGhlIG51bWJl ciB0aGF0IHlvdSdyZSBhbGxvd2VkIHRvIHJlZ2lzdGVyIHBlci10YXNrPw0KDQpJZiB5b3UgY2Fu IGp1c3QgcmVnaXN0ZXIgY29uc2VjdXRpdmUgYWRkcmVzc2VzIGVhY2ggNCBieXRlcyBhcGFydCB0 aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIHJlcXVpcmVkIHRvIGtlZXAgdHJhY2sgb2YgaXQgaW4g dGhlIGtlcm5lbCBsb29rcyB0byBiZSAyMCBvciAyNCBieXRlcyBsb25nIGRlcGVuZGluZyBvbiBr ZXJuZWwgYml0bmVzcyAodXNpbmcga21hbGxvYyBpdCBzaG91bGQgYmUgMzIgYnl0ZXMgYWxsb2Nh dGVkIGVpdGhlciB3YXkpIHNvIGlmIHlvdSBkbyBzb21ldGhpbmcgbGlrZSB0aWUgdXAgMUdpQiBv ZiBtZW1vcnkgaW4gdXNlciBzcGFjZSByZWdpc3RlcmVkIHdpdGggQ1BVIGNhY2hlIGxvY2F0aW9u cyBpdCB3aWxsIHRpZSB1cCA+OEdpQiBvZiBtZW1vcnkgaW4gdGhlIGtlcm5lbCBhbmQgdGhlcmUg d2lsbCBiZSBhIGh1Z2UgbGlua2VkIGxpc3QgdGhhdCB3aWxsIHRha2Ugc2lnbmlmaWNhbnQgYW1v dW50cyBvZiB0aW1lIHRvIHRyYXZlcnNlLiBZb3UgY291bGQgdXNlIGl0IGFzIGEgbG9jYWwgZGVu aWFsIG9mIHNlcnZpY2UgYXR0YWNrIHRvIHRyeSBhbmQgc29hayB1cCBtZW1vcnkgYW5kIGNhdXNl IGEga2VybmVsIE9PTSBiZWNhdXNlIHRoZSBrZXJuZWwgbmVlZHMgbW9yZSBtZW1vcnkgdG8ga2Vl cCB0cmFjayBvZiB0aGUgcmVxdWVzdCBjb21wYXJlZCB0byB0aGUgc2l6ZSBvZiB0aGUgbWVtb3J5 IHVzZWQgYnkgdXNlciBzcGFjZSB0byBjcmVhdGUgaXQuIFRoZXJlIGRvZXNuJ3QgY3VycmVudGx5 IGFwcGVhciB0byBiZSBhbnkgdXBwZXIgYm91bmRzIG9uIHRoZSBudW1iZXIgdGhhdCBjYW4gYmUg cmVnaXN0ZXJlZC4NCg0KSW4gdGVybXMgb2YgdHJhY2tpbmcgd2hhdCBpdCdzIGRvaW5nIHdvdWxk IHlvdSBjb25zaWRlciBzb21lIHN5c2ZzIGF0dHJpYnV0ZSBmaWxlcyAob3Igc29tZXRoaW5nIGlu IGRlYnVnZnMpIHRoYXQgdHJhY2tlZCAodGhlc2Ugd291bGQgYWxsIGJlIGluIHRoZSBhZGQgcGF0 aCBzbyBpdCBzaG91bGRuJ3QgYmUgcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlKToNCg0KMSkgVGhlIGxh cmdlc3QgbnVtYmVyIG9mIGVudHJpZXMgc29tZW9uZSBoYXMgY3JlYXRlZCBpbiB0aGUgbGlzdCBp biBhbnkgdGFzaw0KMikgVGhlIG51bWJlciBvZiB0aW1lcyAoYXNzdW1pbmcgeW91IGltcGxlbWVu dCBhbiB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIGFsbG93ZWQpIHRoZSB1cHBlciBib3VuZCBp cyBiZWluZyBoaXQgKHRvIGFsbG93IHNvbWVvbmUgdG8gbW9uaXRvciBmb3IgaXNzdWVzIHdoZXJl IHRoZSB1cHBlciBib3VuZCBpcyBiZWluZyBoaXQpDQoNCkFzc3VtaW5nIHRoYXQgc29tZXRoaW5n IChlLmcuIGdsaWJjKSBpcyB3aWxsaW5nIHRvIHJlZ2lzdGVyIGFuZCBtYWtlIGFuIGVudHJ5IGF2 YWlsYWJsZSBmb3IgdGhlIGxpZmUgb2YgdGhlIHRhc2sgY29uc2lkZXIgYWxsb3dpbmcgb25lIGZs YWcsIGZvciBleGFtcGxlLCBHRVRDUFVfQ0FDSEVfUEVSU0lTVEVOVCB3aXRoIEdFVENQVV9DQUNI RV9DTURfUkVHSVNURVIgYW5kIGhhdmUgYSBuZXcgY29tbWFuZCBHRVRDUFVfQ0FDSEVfQ01EX0dF VF8gUEVSU0lTVEVOVCB0byBhbGxvdyBzb21lb25lIHRvIGFzayBmb3IgdGhlIHVzZXIgc3BhY2Ug YWRkcmVzcyBvZiBhbiBlbnRyeSB0aGF0IHNvbWV0aGluZyBoYXMgZ3VhcmFudGVlZCB3aWxsIGJl IHRoZXJlIHVudGlsIHRoZSB0YXNrIGVuZHMuIElmIG5vbmUgZXhpc3QgdGhleSBjYW4gZmFsbCBi YWNrIGFuZCBhbGxvY2F0ZSBhIG5ldyBvbmUgLSBpdCBhbGxvd3MgZm9yIGJldHRlciByZXVzZSBv ZiBhbiBleGlzdGluZyByZXNvdXJjZSBidXQgbG9nIGEgd2FybmluZyBpZiB5b3UncmUgZm9yY2Vk IHRvIHJlbW92ZSBhIHBlcnNpc3RlbnQgZW50cnkgb3Igc29tZW9uZSBhdHRlbXB0cyB0byB1bnJl Z2lzdGVyIGl0ICh3aGljaCBzaG91bGQgYWx3YXlzIGZhaWwpIHNpbmNlIHNvbWVvbmUgaW4gdXNl ciBzcGFjZSB3aWxsIGhhdmUgYnJva2VuIHRoZWlyIHByb21pc2UgdGhhdCBpdCB3aWxsIGFsd2F5 cyBiZSB0aGVyZSB1bnRpbCB0aGUgdGFzayBlbmRzICh0aGF0IG1lYW5zIHBlcnNpc3RlbnQgb25l cyBzaG91bGQgYmUgbGVmdCB0byBiZSB0b3JuIGRvd24gYnkgdGhlIGtlcm5lbCBub3QgdW5yZWdp c3RlcmVkIGZyb20gdXNlciBzcGFjZSkuIElmIHlvdSBkbyB0aGlzIHlvdSBtaWdodCBuZWVkIHRv IG9wdGltaXplIHRoZSBmaW5kIHByb2Nlc3Mgc28gaXQncyBtb3JlIGxpa2VseSB0aGUgZmlyc3Qg cGVyc2lzdGVudCBvbmUgd2lsbCBiZSB0aGUgZmlyc3Qgb25lIGZvdW5kIGlmIHlvdSB0aGluayBz b21lb25lIGlzIG1vcmUgbGlrZWx5IHRvIHRha2UgdGhlIGFwcHJvYWNoIG9mIGFza2luZyBmb3Ig dGhhdCBmaXJzdCBhbmQgZmFsbGluZyBiYWNrIHRvIGNyZWF0aW5nIGEgbmV3IG9uZSBpZiB0aGVy ZSBpc24ndCBhbHJlYWR5IG9uZSBwcmVzZW50LiBIYXZpbmcgdGhpcyB3aWxsIGFsc28gdGVuZCB0 byBsaW1pdCB0aGUgbnVtYmVyIG9mIHRoZXNlIHRoYXQgYW55b25lIHdpbGwgbmVlZCB0byBjcmVh dGUgaWYgbW9zdCBsaWJyYXJpZXMgYXNrIGZvciBhIHBlcnNpc3RlbnQgZW50cnkgZmlyc3QuDQoN ClRoYW5rcw0KU2hhbmUNCgTvv717Lm7vv70r77+977+977+977+977+977+977+9KyXvv73vv71s endt77+977+9Yu+/veunsu+/ve+/vXLvv73vv716WO+/ve+/vRbvv73vv70p77+977+977+9dypq Z++/ve+/ve+/vR7vv73vv73vv73vv73vv73domov77+977+977+9eu+/vd6W77+977+9Mu+/vd6Z 77+977+977+9Ju+/vSnfoe+/vWHvv73vv71/77+977+9Hu+/vUfvv73vv73vv71o77+9D++/vWo6 K3bvv73vv73vv71377+92aUNCg==