Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1601234pxk; Fri, 25 Sep 2020 21:26:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzikNBO59LRj5+oWGWeewZQc0p5tw9ENCGgIv9ypHiiS/AMu2lQgBOwingWIvbTScg+k+v4 X-Received: by 2002:aa7:dd16:: with SMTP id i22mr4896086edv.335.1601094392513; Fri, 25 Sep 2020 21:26:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601094392; cv=none; d=google.com; s=arc-20160816; b=Bj64JaGOxZ8eFKG7cL7rQ4JugEXjgx1/V6oSL3rYzqdGP41oOxLT6zlDJwFfVhcQtR +x7YlCIWel1DtZV04X03EsaA310WCXMDnlFnHm8BDos8KGMojJlHbwYrdF6IZ8zjLHfw n3r6KjhbebVJ+ZvFs5nJAYyFu7dbjk2J6BYvaaaEFdcvaeeIegP0b+5YJU8pung5kzgq ouHwlsxSEo2vNLBc4U2fw1SniuBL76xuAD80C3InrMRVUfmNO2l4CR+WFryH4naahEXY 9+nKL2ET1AlzmQ9PTFBSqLXb/3SDde+z4CUtAwQ5Ce2cx5zDSWgszk+wTnDtYurAqLiS jbbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=u7Z9AmMaAX9Vb4Ld53icr/xLpCufMXVRoWb2ypLsc80=; b=QAsKrhB6355JRd28bL+yHvIrAUOQmG1Si3OvMpmJpKRHZ3QBpR8CxjQ8UQuDPycJPl PalZib58Gv6YjyC0dtspeVG+3rLH7EO+1cyz69hgOtcu5rv58LasVVhBPXj2xy2Q5GGr gpHa0+P9B6ggGIgG/xTdOn4c6M8aEMtXJpNKFawLSP5IwLOfD2ZDA5yAQNbohmIaM/5D vo/wZidahR/1DV+Vp/NHfRvAOw3UhWL0/AzD5S3DDTb5ubVwZelE9c12fTllnD4RQCCx fQ312f40b36StyYEAxtgbA5PlXclCYGsUL2kfxXRBC3T1YBZnOjlru+OVHQxrhaAfBFO YiaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mVKL30wy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s24si3965308ejd.606.2020.09.25.21.26.10; Fri, 25 Sep 2020 21:26:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mVKL30wy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729426AbgIZEY5 (ORCPT + 99 others); Sat, 26 Sep 2020 00:24:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727495AbgIZEY5 (ORCPT ); Sat, 26 Sep 2020 00:24:57 -0400 Received: from mail-pj1-x1044.google.com (mail-pj1-x1044.google.com [IPv6:2607:f8b0:4864:20::1044]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 857D1C0613CE for ; Fri, 25 Sep 2020 21:24:57 -0700 (PDT) Received: by mail-pj1-x1044.google.com with SMTP id u3so487411pjr.3 for ; Fri, 25 Sep 2020 21:24:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=u7Z9AmMaAX9Vb4Ld53icr/xLpCufMXVRoWb2ypLsc80=; b=mVKL30wyp8QWxrO/AXPzbqcUkAgUwQ5PQLPtaTkJUo85MCgp0lLqI759YCjmqYCkfo 0vofLOZ+oqHZEyalKS9grgA6QsTsHTLZUVGmcmn4NXUp+sOGw9tqWOL6ubqGxS3Nrc00 q7tnYBkMjfrG4/lWYFeHodZ7QGCewEqSZ6IsvQh/3ZR0RsD03VrR8qY1GpHDuym1lq5x vmaDqZ8UEYL5EXf8Wktjix4s29ercJuTkpkr1blwjS1MwNlPlh5wQKPWzsMsYaIxYeKr psDWBvDxbJDar9sPHmE6joj+ftiS9KY4vzTpm7AdJVQcwhLAOkWQl4oK2hkRKUtga3cW uDPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=u7Z9AmMaAX9Vb4Ld53icr/xLpCufMXVRoWb2ypLsc80=; b=BobHkUXzjvYID2TOX1/l4SuyF7UjQs7Q0d9HNsxM491AvLohtQliY126FMLSSpeeZc guwdDDFy5e5XHquXFiZtk2Da201j0yv8jzEp2//ASS4LSLWS1Y6KpFG6UzpD2ynU/xst HmxOf3Z/OjqFux5s4/Z9ZjzqdFbI1Dlj0zAciZrVbxnFWsVYU/LStWSABZ+rQERD+B1U qpChH3tMmtlnjC78BoCZeE2isq2GQBxEkOaOXIdXquo4+Q9tC1j3f2tjhBJUyoiExPkQ KTuGiw/ob9QbQIzxK1dNn9hgtLRZnEKHbVqOCoVW5UAaCaXxz1Xr8ZmmOnlSRdm26TVi fq2w== X-Gm-Message-State: AOAM530XxZMe9cHihJsoVs+U0TjzCUdTcH809TqaYJ/9J3ArKxHApLry qTwyfy/3f6ktKgO+Jy775av6trDCX+tVEg== X-Received: by 2002:a17:902:8347:b029:d1:f365:6fb5 with SMTP id z7-20020a1709028347b02900d1f3656fb5mr2420471pln.61.1601094296568; Fri, 25 Sep 2020 21:24:56 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id a5sm3585886pgk.13.2020.09.25.21.24.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 21:24:55 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , Sumit Semwal , Liam Mark , Laura Abbott , Brian Starkey , Hridya Valsaraju , Suren Baghdasaryan , Sandeep Patil , =?UTF-8?q?=C3=98rjan=20Eide?= , Robin Murphy , Ezequiel Garcia , Simon Ser , James Jones , linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [RFC][PATCH 0/6] dma-buf: Performance improvements for system heap Date: Sat, 26 Sep 2020 04:24:47 +0000 Message-Id: <20200926042453.67517-1-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hey All, So this patch series contains a series of performance optimizations to the dma-buf system heap. Unfortunately, in working these up, I realized the heap-helpers infrastructure we tried to add to miniimize code duplication is not as generic as we intended. For some heaps it makes sense to deal with page lists, for other heaps it makes more sense to track things with sgtables. So this series reworks the system heap to use sgtables, and then consolidates the pagelist method from the heap-helpers into the CMA heap. After which the heap-helpers logic is removed (as it is unused). I'd still like to find a better way to avoid some of the logic duplication in implementing the entire dma_buf_ops handlers per heap. But unfortunately that code is tied somewhat to how the buffer's memory is tracked. After this, the series introduces two optimizations to the the system heap, utilizing large order pages, and adding a page-pool (maybe abusing the pagepool logic from the network code, but it seems silly to reimplement it). I implemented a simple allocation microbenchmark to compare dmabuf heaps vs ion: https://git.linaro.org/people/john.stultz/android-dev.git/commit/?h=dev/dma-buf-heap-perf&id=e33aabd34b300f8f8be8d71ec7253dd0abe702f2 With these changes, the allocation path is *much* improved, performing better then ION (though to be fair, the repeated allocating and freeing of the same size buffer is the ideal case for the pagepool logic, so don't read too much into it). I charted some datapoints from the microbenchmark with each of the patches should folks be interested. https://docs.google.com/spreadsheets/d/1-1C8ZQpmkl_0DISkI6z4xelE08MlNAN7oEu34AnO4Ao/edit#gid=0 Finally, a port of a patch that Ørjan Eide implemented for ION that avoids calling sync on attachments that don't have a mapping. Feedback on these would be great! Cc: Sumit Semwal Cc: Liam Mark Cc: Laura Abbott Cc: Brian Starkey Cc: Hridya Valsaraju Cc: Suren Baghdasaryan Cc: Sandeep Patil Cc: Ørjan Eide Cc: Robin Murphy Cc: Ezequiel Garcia Cc: Simon Ser Cc: James Jones Cc: linux-media@vger.kernel.org Cc: dri-devel@lists.freedesktop.org John Stultz (6): dma-buf: system_heap: Rework system heap to use sgtables instead of pagelists dma-buf: heaps: Move heap-helper logic into the cma_heap implementation dma-buf: heaps: Remove heap-helpers code dma-buf: system_heap: Allocate higher order pages if available dma-buf: system_heap: Add pagepool support to system heap dma-buf: heaps: Skip sync if not mapped drivers/dma-buf/heaps/Kconfig | 1 + drivers/dma-buf/heaps/Makefile | 1 - drivers/dma-buf/heaps/cma_heap.c | 332 +++++++++++++++++---- drivers/dma-buf/heaps/heap-helpers.c | 271 ----------------- drivers/dma-buf/heaps/heap-helpers.h | 53 ---- drivers/dma-buf/heaps/system_heap.c | 426 ++++++++++++++++++++++++--- 6 files changed, 660 insertions(+), 424 deletions(-) delete mode 100644 drivers/dma-buf/heaps/heap-helpers.c delete mode 100644 drivers/dma-buf/heaps/heap-helpers.h -- 2.17.1