From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933893AbcJUONQ (ORCPT ); Fri, 21 Oct 2016 10:13:16 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:33470 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933319AbcJUOLj (ORCPT ); Fri, 21 Oct 2016 10:11:39 -0400 From: Tvrtko Ursulin X-Google-Original-From: Tvrtko Ursulin To: Intel-gfx@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Chris Wilson , Tvrtko Ursulin Subject: [PATCH 0/5] Avoid pessimistic scatter-gather allocation Date: Fri, 21 Oct 2016 15:11:18 +0100 Message-Id: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tvrtko Ursulin We can decrease the i915 kernel memory usage by doing more sg list coallescing and avoiding the pessimistic list allocation. At the moment we got two places in our code, the main shmemfs backed object allocator, and the userptr object allocator, which both can allocate sg list size pessimistically, and in the latter case also do not exploit entry coallescing when it is possible. This results in between one to six megabytes of memory wasted on unused sg list entries under some common workloads: * Logging into KDE there is 1-2 MiB of unused sg entries. * Running the T-Rex benchamrk aroun 3 Mib. * Similarly for Manhattan 5-6 MiB. To remove this wastage this series starts with some cleanups in the sg_alloc_table_from_pages implementation and then adds and exports a new __sg_alloc_table_from_pages function. This then gets used by the i915 driver to achieve the described savings. Tvrtko Ursulin (5): lib/scatterlist: Fix offset type in sg_alloc_table_from_pages lib/scatterlist: Avoid potential scatterlist entry overflow lib/scatterlist: Introduce and export __sg_alloc_table_from_pages drm/i915: Use __sg_alloc_table_from_pages for allocating object backing store drm/i915: Use __sg_alloc_table_from_pages for userptr allocations drivers/gpu/drm/i915/i915_drv.h | 9 +++ drivers/gpu/drm/i915/i915_gem.c | 77 +++++++++++-------------- drivers/gpu/drm/i915/i915_gem_userptr.c | 29 +++------- drivers/media/v4l2-core/videobuf2-dma-contig.c | 4 +- drivers/rapidio/devices/rio_mport_cdev.c | 4 +- include/linux/scatterlist.h | 11 ++-- lib/scatterlist.c | 78 ++++++++++++++++++++------ 7 files changed, 120 insertions(+), 92 deletions(-) -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 0/5] Avoid pessimistic scatter-gather allocation Date: Fri, 21 Oct 2016 15:11:18 +0100 Message-ID: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id DC61E6E02E for ; Fri, 21 Oct 2016 14:11:39 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id b75so6115639lfg.3 for ; Fri, 21 Oct 2016 07:11:39 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldlIGNhbiBk ZWNyZWFzZSB0aGUgaTkxNSBrZXJuZWwgbWVtb3J5IHVzYWdlIGJ5IGRvaW5nIG1vcmUgc2cgbGlz dApjb2FsbGVzY2luZyBhbmQgYXZvaWRpbmcgdGhlIHBlc3NpbWlzdGljIGxpc3QgYWxsb2NhdGlv bi4KCkF0IHRoZSBtb21lbnQgd2UgZ290IHR3byBwbGFjZXMgaW4gb3VyIGNvZGUsIHRoZSBtYWlu IHNobWVtZnMgYmFja2VkCm9iamVjdCBhbGxvY2F0b3IsIGFuZCB0aGUgdXNlcnB0ciBvYmplY3Qg YWxsb2NhdG9yLCB3aGljaCBib3RoIGNhbgphbGxvY2F0ZSBzZyBsaXN0IHNpemUgcGVzc2ltaXN0 aWNhbGx5LCBhbmQgaW4gdGhlIGxhdHRlciBjYXNlIGFsc28gZG8Kbm90IGV4cGxvaXQgZW50cnkg Y29hbGxlc2Npbmcgd2hlbiBpdCBpcyBwb3NzaWJsZS4KClRoaXMgcmVzdWx0cyBpbiBiZXR3ZWVu IG9uZSB0byBzaXggbWVnYWJ5dGVzIG9mIG1lbW9yeSB3YXN0ZWQgb24gdW51c2VkCnNnIGxpc3Qg ZW50cmllcyB1bmRlciBzb21lIGNvbW1vbiB3b3JrbG9hZHM6CgogICAgKiBMb2dnaW5nIGludG8g S0RFIHRoZXJlIGlzIDEtMiBNaUIgb2YgdW51c2VkIHNnIGVudHJpZXMuCiAgICAqIFJ1bm5pbmcg dGhlIFQtUmV4IGJlbmNoYW1yayBhcm91biAzIE1pYi4KICAgICogU2ltaWxhcmx5IGZvciBNYW5o YXR0YW4gNS02IE1pQi4KClRvIHJlbW92ZSB0aGlzIHdhc3RhZ2UgdGhpcyBzZXJpZXMgc3RhcnRz IHdpdGggc29tZSBjbGVhbnVwcyBpbiB0aGUKc2dfYWxsb2NfdGFibGVfZnJvbV9wYWdlcyBpbXBs ZW1lbnRhdGlvbiBhbmQgdGhlbiBhZGRzIGFuZCBleHBvcnRzIGEgbmV3Cl9fc2dfYWxsb2NfdGFi bGVfZnJvbV9wYWdlcyBmdW5jdGlvbi4KClRoaXMgdGhlbiBnZXRzIHVzZWQgYnkgdGhlIGk5MTUg ZHJpdmVyIHRvIGFjaGlldmUgdGhlIGRlc2NyaWJlZCBzYXZpbmdzLgoKVHZydGtvIFVyc3VsaW4g KDUpOgogIGxpYi9zY2F0dGVybGlzdDogRml4IG9mZnNldCB0eXBlIGluIHNnX2FsbG9jX3RhYmxl X2Zyb21fcGFnZXMKICBsaWIvc2NhdHRlcmxpc3Q6IEF2b2lkIHBvdGVudGlhbCBzY2F0dGVybGlz dCBlbnRyeSBvdmVyZmxvdwogIGxpYi9zY2F0dGVybGlzdDogSW50cm9kdWNlIGFuZCBleHBvcnQg X19zZ19hbGxvY190YWJsZV9mcm9tX3BhZ2VzCiAgZHJtL2k5MTU6IFVzZSBfX3NnX2FsbG9jX3Rh YmxlX2Zyb21fcGFnZXMgZm9yIGFsbG9jYXRpbmcgb2JqZWN0CiAgICBiYWNraW5nIHN0b3JlCiAg ZHJtL2k5MTU6IFVzZSBfX3NnX2FsbG9jX3RhYmxlX2Zyb21fcGFnZXMgZm9yIHVzZXJwdHIgYWxs b2NhdGlvbnMKCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAg IHwgIDkgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAg IHwgNzcgKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdXNlcnB0ci5jICAgICAgICB8IDI5ICsrKy0tLS0tLS0KIGRyaXZlcnMvbWVkaWEvdjRs Mi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMgfCAgNCArLQogZHJpdmVycy9yYXBpZGlvL2Rl dmljZXMvcmlvX21wb3J0X2NkZXYuYyAgICAgICB8ICA0ICstCiBpbmNsdWRlL2xpbnV4L3NjYXR0 ZXJsaXN0LmggICAgICAgICAgICAgICAgICAgIHwgMTEgKystLQogbGliL3NjYXR0ZXJsaXN0LmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDc4ICsrKysrKysrKysrKysrKysrKysrLS0t LS0tCiA3IGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkK Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==