Received: by 10.223.185.116 with SMTP id b49csp205577wrg; Mon, 19 Feb 2018 20:25:39 -0800 (PST) X-Google-Smtp-Source: AH8x227tlg6PAbIYDaIgJk+CAJ5ULp0AKXLt4Rtek0dUYr2s+nSM1byZ+f1HC5ROiEJCX4U5ypGX X-Received: by 2002:a17:902:a517:: with SMTP id s23-v6mr16045831plq.1.1519100739535; Mon, 19 Feb 2018 20:25:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519100739; cv=none; d=google.com; s=arc-20160816; b=HiXNE6hudEMp4tEgrvIj3r9AHfyzGB5yTrsspURF7zUEfx3dcSq6GAYirBR8xI0h31 5paRiQdnvR83V10FnsR0cKigrLZOtrL3q4HbN/R8YqE+LJC07XnZ2feFNYumC37rLoiE amTebN9ulV1FFSiCUIC0pIENQnTNQTJqlYsSCoXMnO1cDWtgY8bEdjclXYy2zg9lEesr 4VvkSy4W3DkkpP7uiiCH525H5ZN0NPCwNOJMbT62Hd/iBTuG2KJ4TQLHcl8/3u7MzUeb F6BRKEmWtpGprRbK8Chn22/O8NFUu02lNNw11Z4zj/czmpDvBlgysdTowRSTz+f81g1K ZQnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=H257quS7Gp3DH5n+S9cETJKBll2rdw9VoOy/Hq9s0M8=; b=n5SD1sQL32/iSwrAlPrRaD1GCRQ21pWeI+Bg2V/ggxJxIFh7DoLLwGvvK/c1ZPk1xn oPmUgKDPCRGIWIoyLLuPwMdAnWieh6C+eXjjy3C1hcXU0gjb8qM+HwyB7fCEIMjRtkNC bO106TWDTDsr7ftgNVGfMvzHyXMzBJrav+O233JXjebwIfeEeSsLLJ8KzwcWjBuvzKNk GLHYj8qSRzJaFmOXwfolmx9BcyNngUgUjaP+fuXx6+RoUD9k5OiF5KZBqohbsAFaTQYX NV3c92nHkub8HQjCnBiLnJEJkK0Rvsswn5UDMEAJr1YIpZuKSsij3Chr7LP2I8r7H4U0 4Vjg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g1-v6si5150579pld.322.2018.02.19.20.25.23; Mon, 19 Feb 2018 20:25:39 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932476AbeBTDRE (ORCPT + 99 others); Mon, 19 Feb 2018 22:17:04 -0500 Received: from mga09.intel.com ([134.134.136.24]:40358 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932352AbeBTDRD (ORCPT ); Mon, 19 Feb 2018 22:17:03 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Feb 2018 19:17:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,537,1511856000"; d="scan'208";a="19346594" Received: from rchatre-mobl.amr.corp.intel.com (HELO [10.255.73.9]) ([10.255.73.9]) by orsmga008.jf.intel.com with ESMTP; 19 Feb 2018 19:17:01 -0800 Subject: Re: [RFC PATCH V2 11/22] x86/intel_rdt: Associate pseudo-locked regions with its domain To: Thomas Gleixner Cc: fenghua.yu@intel.com, tony.luck@intel.com, gavin.hindman@intel.com, vikas.shivappa@linux.intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org References: <216ad1ef8314dc578a900ff8b06248464f5aa2ee.1518443616.git.reinette.chatre@intel.com> <7bd1f8e8-116f-bdb2-23d2-a94f9a21e028@intel.com> From: Reinette Chatre Message-ID: <0efce774-57a8-40fa-7b8a-6e57e496bb37@intel.com> Date: Mon, 19 Feb 2018 19:17:01 -0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Thomas, On 2/19/2018 3:19 PM, Thomas Gleixner wrote: > On Mon, 19 Feb 2018, Reinette Chatre wrote: >> On 2/19/2018 1:19 PM, Thomas Gleixner wrote: >>> On Tue, 13 Feb 2018, Reinette Chatre wrote: >>> >>>> After a pseudo-locked region is locked it needs to be associated with >>>> the RDT domain representing the pseudo-locked cache so that its life >>>> cycle can be managed correctly. >>>> >>>> Only a single pseudo-locked region can exist on any cache instance so we >>>> maintain a single pointer to a pseudo-locked region from each RDT >>>> domain. >>> >>> Why is only a single pseudo locked region possible? >> >> The setup of a pseudo-locked region requires the usage of wbinvd. If a >> second pseudo-locked region is thus attempted it will evict the >> pseudo-locked data of the first. > > Why does it neeed wbinvd? wbinvd is a big hammer. What's wrong with clflush? wbinvd is required by this hardware supported feature but limited to the creation of the pseudo-locked region. An administrator could dedicate a portion of cache to pseudo-locking and applications using this region can come and go. The pseudo-locked region lifetime need not be tied to application lifetime. The pseudo-locked region could be set up once on boot and remain for lifetime of system. Even so, understanding that it is a big hammer I did explore the alternatives. Trying clflush, clflushopt, as well as clwb. Finding them all to perform poorly(*) I went further to explore if it is possible to use these other instructions with some additional work in support to make them perform as well as wbinvd. The additional work included, looping over the data more times than done for wbinvd, reducing the size of memory locked in relationship to cache size, unused spacing between pseudo-locked region and other regions, unmapped memory at end of pseudo-locked region. In addition to the above research from my side I also followed up with the CPU architects directly to question the usage of these instructions instead of wbinvd. In all the testing and questioning I did I was only able to confirm that wbinvd is required. Its use consistently results in the fewest cache misses to the created pseudo-locked region. Reinette (*) By poorly I mean that accessing the pseudo-locked region created using these instructions resulted in significant cache misses.