From patchwork Mon Feb 11 14:35:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 10805967 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B29FD1390 for ; Mon, 11 Feb 2019 14:36:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A17482A4FA for ; Mon, 11 Feb 2019 14:36:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 958782A51B; Mon, 11 Feb 2019 14:36:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3AE1F2A4FA for ; Mon, 11 Feb 2019 14:36:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 27D116E283; Mon, 11 Feb 2019 14:35:58 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id A8C406E03F; Mon, 11 Feb 2019 14:35:56 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 15537714-1500050 for multiple; Mon, 11 Feb 2019 14:35:44 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Mon, 11 Feb 2019 14:35:44 +0000 Message-Id: <20190211143544.16184-1-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] i915/gem_exec_parse: Switch to a fixed timeout for basic-allocations X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: igt-dev@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP basic-allocations was written to demonstrate a flaw in our continual reallocation of cmdparser shadow bo, largely fixed by keeping a small cache of bo of different lengths (to speed up the search for the correct sized bo). We only care enough to exercise the slowdown by submitting lots of execbufs, and can see the effect of bo caching on the rate, so replace the fixed number of iterations with a timeout and count how many batches we could submit instead. Similarly, we now do not need to wait for all of our queue to complete as we can tell the kernel to drop the queue instead. References: https://bugs.freedesktop.org/show_bug.cgi?id=107936 Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin --- tests/i915/gem_exec_parse.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/i915/gem_exec_parse.c b/tests/i915/gem_exec_parse.c index b653b1bdc..62e8d0a51 100644 --- a/tests/i915/gem_exec_parse.c +++ b/tests/i915/gem_exec_parse.c @@ -303,15 +303,15 @@ test_lri(int fd, uint32_t handle, struct test_lri *test) static void test_allocations(int fd) { - uint32_t bbe = MI_BATCH_BUFFER_END; + const uint32_t bbe = MI_BATCH_BUFFER_END; struct drm_i915_gem_execbuffer2 execbuf; struct drm_i915_gem_exec_object2 obj[17]; - int i, j; + unsigned long count; intel_require_memory(2, 1ull<<(12 + ARRAY_SIZE(obj)), CHECK_RAM); memset(obj, 0, sizeof(obj)); - for (i = 0; i < ARRAY_SIZE(obj); i++) { + for (int i = 0; i < ARRAY_SIZE(obj); i++) { uint64_t size = 1ull << (12 + i); obj[i].handle = gem_create(fd, size); @@ -322,17 +322,21 @@ static void test_allocations(int fd) memset(&execbuf, 0, sizeof(execbuf)); execbuf.buffer_count = 1; - for (j = 0; j < 16384; j++) { - igt_progress("allocations ", j, 16384); - i = rand() % ARRAY_SIZE(obj); + + count = 0; + igt_until_timeout(20) { + int i = rand() % ARRAY_SIZE(obj); execbuf.buffers_ptr = to_user_pointer(&obj[i]); execbuf.batch_start_offset = (rand() % (1ull<